Существует несколько возможностей:
Используйте порт Unix touch
команда и просто объединяется find
и touch
в Unix путь. Существует несколько вариантов. Часто упомянутый GNUWin32, cygwin, и unxutils. Менее известный, но до некоторой степени лучше, инструменты в инструментарии утилиты SFUA, которые работают в Подсистеме за основанными на UNIX Приложениями, которая прибывает прямо туда в поле с выпуском Windows 7 Ultimate и Windows Server 2008 R2. (Для Windows XP можно загрузить и установить Сервисы для версии 3.5 UNIX.) Этот инструментарий имеет большое количество инструментов TUI командной строки, от mv
и du
, через Korn и оболочки C, к perl
и awk
. Это прибывает и в x86-64 и в ароматы IA64, а также x86-32. Программы, запущенные в собственной надлежащей среде POSIX Windows, а не с эмулятором DLLs (такой как cygwin1.dll
) разделение на уровни вещей по Win32. И да, инструментарий имеет touch
и find
, а также приблизительно 300 других.
Все эти инструментарии имеют известный недостаток выполнения отдельного процесса для каждого файла, который будет затронут, конечно. Это не проблема со следующими альтернативами.
Используйте одного из многих собственный Win32 touch
команды, которые люди записали и опубликовали. Многие из них варианты поддержки для выполнения рекурсии, без необходимости Unix find
переносить их. (Они, в конце концов, предназначаются для базы пользователей, которая ищет a touch
управляйте, потому что это не имеет целой загрузки портированных команд Unix.) Один таков Stéphane Duguay touch
который, как Вы видите, имеет a --recursive
опция.
Станьте умными с тайными тайнами CMD. Как упомянуто в другом ответе, COPY /B myfile+,,
обновит метку даты последнего изменения файла, с помощью малоизвестного "плюс" синтаксис COPY
команда (больше, на котором может быть найден здесь, случайно). Это, конечно, может быть объединено с FOR /R
выполнить операцию рекурсивно, как намекнули в другом ответе здесь.
Используйте заменяющий интерпретатор команд и будьте менее умными и будьте более простыми, чем CMD. Программное обеспечение мирового судьи, TCC/LE, является один таким. Это добавляет /S
опция к COPY
команда, означая, что можно было использовать COPY /S
с "плюс" синтаксис для избавления от необходимости a FOR
обертка. Но это действительно все еще делает жизнь излишне трудной для себя, полагая, что TCC/LE имеет созданный в команде TOUCH, которая непосредственно поддерживает /S
опция.
Так как они легко доступны, я рекомендовал бы использовать в своих интересах unxutils. Они включают find
и touch
команды, которые сделают это очень легким.
После изменения на каталог самого верхнего уровня Вы хотите изменить:
find . -type f -exec touch {} +
Или Вы могли использовать инструменты, уже встроенные в Windows, после того как у Вас уже есть "сенсорный" инструмент некоторого вида:
for /r %i in (C:\Path\To\Root\*) do @touch "%i"
ИЛИ
forfiles /P C:\Path\To\Root /S /C "touch @file"
(N.B.: Если Вы делаете это от пакетного файла и хотите использовать for
управляйте, удостоверьтесь, что использовали двойные знаки процента для своих переменных. (например. %%i
вместо %i
)