PDA

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


V!RTuE
29-01-2015, 13:53
Вот есть такой код:

SET f=%~dp0

::Сканирование ветки реестра КонсультантПлюс. В ней указывается рабочая директория, в которой также могут находится CONS_ERR.TXT. Копирование только нового в \ARCHIVE\
for /f "usebackq tokens=3" %%i in (
`reg.exe query "HKEY_CURRENT_USER\Software\ConsultantPlus" /s 2^>nul ^| findstr.exe /r /c:"WrkDir.*REG_SZ"`
) do if exist "%%~i\." for /f "delims=" %%j in ('dir /a-d/b/s "%%~i\CONS_ERR.TXT" 2^>nul') do copy "%%j" "%f%ARCHIVE">nul

::Сканирование директории, где расположен батник и всех подпапок на наличие CONS_ERR.TXT и копирование в \ARCHIVE
for /r "%f%" %%f in ("CONS_ERR.TXT") do xcopy "%%f" "%f%ARCHIVE\" /y

Помогите переделать код так, чтобы из всех найденных файлов копировался в папку \ARCHIVE только самый новый файл CONS_ERR.TXT. Т.е. нужно просканировать все папки с подпапками, которые указаны в реестре, и папки с подпапками, где расположен сам батник.

V!RTuE
05-02-2015, 16:25
Всё-таки мануалы лучше самому читать и более внимательно. Всё оказалось очень просто. Надо было добавить параметр /D к команде xcopy. и в первом случае copy заменить на xcopy (и тоже добавить параметр /y)

SET f=%~dp0

::Сканирование ветки реестра КонсультантПлюс. В ней указывается рабочая директория, в которой также могут находится CONS_ERR.TXT. Копирование только нового в \ARCHIVE\
for /f "usebackq tokens=3" %%i in (
`reg.exe query "HKEY_CURRENT_USER\Software\ConsultantPlus" /s 2^>nul ^| findstr.exe /r /c:"WrkDir.*REG_SZ"`
) do if exist "%%~i\." for /f "delims=" %%j in ('dir /a-d/b/s "%%~i\CONS_ERR.TXT" 2^>nul') do xcopy /D /y "%%j" "%f%ARCHIVE">nul

::Сканирование директории, где расположен батник и всех подпапок на наличие CONS_ERR.TXT и копирование в \ARCHIVE
for /r "%f%" %%f in ("CONS_ERR.TXT") do xcopy /D "%%f" "%f%ARCHIVE\" /y




© OSzone.net 2001-2012