1 октября 2012 г.

Копирование нескольких файлов, последних по времени обновления, при помощи bat-скрипта.

Порой возникает необходимость регулярно копировать из каталога некоторое заранее определенное количество файлов, руководствуясь временем их создания или последнего изменения. Эту задачу можно автоматизировать при помощи батника:



set dir1=[Путь к папке с файлами] set dir2=[Путь к папке для размещения копий] setlocal enabledelayedexpansion set /a num=0 set /a err=0 for /f "tokens=* delims=" %%i in ('dir /b /o:-d /t:W "%dir1%\*.*"') do ( set /a num+=1 if /i !num! leq [количество копируемых файлов] ( copy "%dir1%\%%i" "%dir2%\" > nul if errorlevel 1 (echo %%i >> errorslog.txt set /a err+=1 ) echo copy file...%%i) else ( echo skip file... %%i ) ) echo COUNT OF ERRORS: %err% pause

В квадратные скобки необходимо подставить реальные значения.
Директива setlocal enabledelayedexpansion включает режим отложенного расширения переменных, который позволяет сделать изменения счетчика num видимым внутри цикла (по умолчанию это не так).
Команда dir /b /o:-d /t:W "%dir1%\*.*" определяет порядок копирования файлов. В данном случае первым будет самый новый файл. При помощи других ключей команды dir можно задать другие условия.

Комментариев нет:

Отправить комментарий