Как я могу установить временную метку для файла через командную строку на определенную дату?
Моя конкретная ситуация - Windows 7.
Вам, вероятно, следует уточнить свой вопрос и указать, что вы хотите выбрать новую метку времени. Два текущих ответа предполагают, что вы ищете порт Windows для команды Unix `touch`, которая устанавливает временную метку файла на текущее время.
William Jackson 13 лет назад
1
Я просмотрел Sysinternals и уверен, что у них нет для этого никакой полезности. Вы должны попробовать программы, на которые есть ссылки с http://superuser.com/questions/135901/how-to-modify-timestamp-in-a-dll-or-exe
William Jackson 13 лет назад
0
@ Уильям Джексон изменился, спасибо за это. Также, если это действительно порт Unix `touch`, я мог бы указать дату. http://en.wikipedia.org/wiki/Touch_(Unix). Что-то не так с автоматической связью, убедитесь, что вы получите обе скобки.
Joseph Hansen 13 лет назад
0
Я ... не могу поверить, что никогда не удосужился прочитать "прикосновение человека". Вы научили меня чему-то новому.
William Jackson 13 лет назад
1
Дубликат [Windows-эквивалент команды Linux 'touch'?] (Http://superuser.com/questions/10426/windows-equivalent-of-the-linux-command-touch)
Scott 8 лет назад
0
Небольшое изменение, которое является рекурсивным и немного короче, но менее читаемым: "gci -rec |% {$ _. LastWriteTime = ($ _. LastAccessTime = ($ _. CreationTime = (get-date" 2011-09-14T07: 10:00 ")))}"
codybartfast 13 лет назад
8
Для людей, которые мало знают о Powershell, вы должны указать имя файла после Get-Item. Вы также можете опустить строку после Get-Date, чтобы установить для атрибута текущую дату / время, например поведение сенсорной команды по умолчанию. Наконец, вы можете передать этот код в качестве аргумента команде powershell, чтобы он просто выполнял его из существующего пакетного файла. Пример: `powershell $ (Get-Item aaa.csv) .lastwritetime = $ (Get-Date)`
sjbotha 11 лет назад
7
Что если я хочу сделать это для каждого файла в каталоге?
CodyBugstein 8 лет назад
0
Поиск "Powershell каждый файл". Вы можете найти такие вопросы: http://stackoverflow.com/q/16804265/756329 и http://stackoverflow.com/q/181036/756329
Joseph Hansen 8 лет назад
0
Формат даты и времени не соответствует команде, но общесистемный (в моей системе это был дд / мм / ггг).
Martin Argerami 6 лет назад
1
Запятые указывают на пропуск параметра Destination .
Можете ли вы объяснить, как это работает? Что такое `+ ,,`? Как мне узнать, на какую дату он установлен?
Joseph Hansen 13 лет назад
1
@josmh Проверьте ссылку документации для деталей. Временная метка устанавливается на текущее время, когда вы запускаете команду. Вы подразумеваете, что хотите иметь возможность изменить временную метку на произвольное время по вашему выбору?
William Jackson 13 лет назад
1
Я не вижу, как это помогает мне выбрать новую дату для файла?
Joseph Hansen 13 лет назад
7
Основная проблема заключается в том, что когда файл не находится в текущем каталоге ... он будет копировать файл в текущий каталог, а не "касаться" его на месте.
Kasey Speakman 7 лет назад
0
@KaseySpeakman - эта команда зависит от нахождения в текущем каталоге. Используйте `pushd FILEDIR`, перед командой и` popd` после
Tydaeus 6 лет назад
1
@JosephHansen Это работает путем копирования файла поверх самого себя, в результате чего считается, что файл был изменен «сейчас».
Tydaeus 6 лет назад
0
К сведению, «оптимизация» в Vista + означает, что в зависимости от контекста отметка времени может не обновляться должным образом. Кажется, это работает нормально, если это единственная команда, которую вы запускаете, но если ваш скрипт делает больше, отметка времени может остаться без изменений.
Tydaeus 6 лет назад
0
18
boot13
Nirsoft на помощь: попробуйте бесплатный инструмент nircmd . Это куча полезных инструментов в одной маленькой программе командной строки. Одна из команд позволяет вам указать одно или оба времени создания и изменения, например:
Также, если вы хотите перенести время из файла в другой, лучше всего работает файл clonefiletime из файла fileto!
JasonXA 9 лет назад
1
Без командной строки, но более удобный для массового редактирования: [BulkFileChanger] (https://www.nirsoft.net/utils/bulk_file_changer.html) от Nirsoft
SaAtomic 6 лет назад
0
13
Joseph Hansen
Используя Cygwin, установите отметку времени test.txt на 31 января 2000 года в 00: 01.00:
touch -t 200001310001.00 test.txt
Это возвращается с неправильной ошибкой формата даты.
ziggy 11 лет назад
0
@ Зигги, убедитесь, что вы получили все нули ...
Joseph Hansen 9 лет назад
0
Это отлично сработало для меня `touch -t 201608221400 filename` чтобы установить его на 22.08.2016 14:00:00.
SebastianH 7 лет назад
2
Win32 Console Toolbox содержит утилиту под названием «touch», которая позволяет вам изменять время для одного или нескольких файлов. Я считаю, что это работает только с американским форматом времени, хотя.