Показать полную графическую версию : [решено] Помогите написать батник, копирующий файлы по дате изменения
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC