Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Батник. Поиск файлов во всех подпапках

Алексей Филатов Мастер (1501), закрыт 9 лет назад
В общем надо считать с реестра значения (=путь к рабочей директории программы) . В реестре может быть несколько похожих записей) . После полученные директории просканировать и найти все *.stt файлы (включая поиск в подпапках) и скопировать их в папку, созданную рядом с батником. естественно такой код не работает. For %%A In (HKCU\Software\ConsultantPlus /v WrkDir) Do (
For /F "Tokens=3" %%B In ('Reg Query %%A /S ^| Find /I "WrkDir"') Do ( Set dir=%%B
for /f %%i in (%dir%) do (
Set FILES=%%i
Set TARGET= "%~dp0123\"
for /r %FILES% %%f in (*.stt) do (
xcopy %%f %TARGET% /y
)
)
)
)


Подскажите как это реализовать
Например этот код For %%A In (HKCU\Software\ConsultantPlus /v WrkDir) Do (For /F "Tokens=3" %%B In ('Reg Query %%A /S ^| Find /I "WrkDir"') Do Echo %%B>> "%~dp0result.txt")запишет в файл 2 строки: C:\ConsLocalUserDataC:\ConsUserData
Дополнен 9 лет назад
пробелы почему-то в некоторых местах удалились (( но надеюсь что и так понятно. Прошу помочь знающих
Дополнен 9 лет назад
Alex, А можно поподробнее как это реализовать?
Лучший ответ
ViRTuE Мыслитель (6714) 9 лет назад
@echo off
setlocal enableextensions enabledelayedexpansion

if not exist "%~dp0123" md "%~dp0123"

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\*.stt" 2^>nul') do copy "%%j" "%~dp0123">nul

endlocal
exit /b 0
Остальные ответы
Alex Гуру (4915) 9 лет назад
Я бы скинул список нужных для копирования файлов в отдельный файл командой dir /s /b *.stt
Там они будут с путями, а потом бы копировал подавай на вход команды copy строки из файла со списком файлов. :)
Похожие вопросы