Вот есть такой код:
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. Т.е. нужно просканировать все папки с подпапками, которые указаны в реестре, и папки с подпапками, где расположен сам батник.
CMD/BAT - [решено] Поиск и копирование самого нового файла
-
V!RTuE
Re: CMD/BAT - [решено] Поиск и копирование самого нового файла
Всё-таки мануалы лучше самому читать и более внимательно. Всё оказалось очень просто. Надо было добавить параметр /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