Windows рекурсивная сенсорная команда

В Windows 7, как я могу рекурсивно коснуться всех файлов в каталоге (включая подкаталоги) для обновления метки даты и времени?

Windows 7 имеет механизм для выполнения этого?

17
задан 04.08.2011, 20:04

3 ответа

Существует несколько возможностей:

  • Используйте порт 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 опция.

19
ответ дан 07.12.2019, 10:35

Так как они легко доступны, я рекомендовал бы использовать в своих интересах unxutils. Они включают find и touch команды, которые сделают это очень легким.

После изменения на каталог самого верхнего уровня Вы хотите изменить:

find . -type f -exec touch {} +
5
ответ дан 07.12.2019, 10:35

Или Вы могли использовать инструменты, уже встроенные в 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)

1
ответ дан 07.12.2019, 10:35

Теги

Похожие вопросы