PDA

Показать полную графическую версию : [решено] Помогите написать батник, копирующий файлы по дате изменения


kirillius
22-07-2014, 14:01
Здравствуйте.
Ситуация следующая: надо в сетевой папке с огромной кучей файлов найти самый свежий по дате изменения и содержащий в названии определённые слова (на русском) и скопировать его в другую сетевую папку. Формат файлов - xls или xlsx. Названия файлов должны содержать слова "детских", "субсидий" (т. е. копировать надо будет два разных файла).
Помогите в написании, пожалуйста.

megaloman
22-07-2014, 15:49
@Echo Off
rem Сохранить в 866 (Dos) кодировке если есть русские буквы

Set "In=F:\EXCEL"
Set "Out=E:\Delete"

Call :CopyMask "%In%","%Out%","*кассир*.xl*"
Call :CopyMask "%In%","%Out%","*Форма*.xl*"

GoTo :Eof

:CopyMask

FOR /F "usebackq delims=" %%f IN (`Dir "%~1\%~3" /B /A:-D /O:-D 2^>nul`) DO (
Copy "%~1\%%f" "%~2\" >nul
GoTo :Eof
)

kirillius
22-07-2014, 16:32
megaloman, спасибо большое! А что дописать, чтобы он в конце показывал, что сделал? PAUSE не работает почему-то, отрабатывает и закрывается...

megaloman
22-07-2014, 17:13
@Echo Off
rem Сохранить в 866 (Dos) кодировке если есть русские буквы

cls

Set "In=F:\EXCEL"
Set "Out=E:\Delete"

Call :CopyMask "%In%","%Out%","*ссир*.xl*"
Call :CopyMask "%In%","%Out%","*Форма*.xl*"

Pause
GoTo :Eof

:CopyMask

FOR /F "usebackq delims=" %%f IN (`Dir "%~1\%~3" /B /A:-D /O:-D 2^>nul`) DO (
Copy "%~1\%%f" "%~2\" >nul
If Exist "%~2\%%f" (
Echo Файл "%~1\%%f" скопирован в "%~2\"
) Else (
Echo Файл "%~1\%%f" НЕ скопирован в "%~2\"
)
GoTo :Eof
)
Echo Нет файлов "%~1\%~3"

kirillius
22-07-2014, 17:31
Благодарю!




© OSzone.net 2001-2012