Я пытаюсь рекурсивно пройти по каталогу и найти в нем исполняемые файлы.
Это структура папок
C:\MyCave\iso\SDG\cmpdir
---------------\FolderA
------------------abc.txt
---------------\FolderB
------------------def.exe
---------------\FolderC
------------------ghi.dll
Ниже приведен пример моей летучей мыши.
set f="C:\MyCave\iso\SDG\cmpdir\test-recur"
for /r %%f in ("*.exe") do if exist %%f echo %%f
Хотя он работает и выводит exe-файлы в C:\MyCave\iso\SDG\cmpdir
, но я хочу перечислить exe-файлы, присутствующие только в каталоге C:\MyCave\iso\SDG\cmpdir\test-recur
.
Это мой текущий вывод.
C:\MyCave\iso\SDG\cmpdir>exeRecur.bat
C:\MyCave\iso\SDG\cmpdir>set f="C:\MyCave\iso\SDG\cmpdir\test-recur"
C:\MyCave\iso\SDG\cmpdir>for /R %f in ("*.exe") do if exist %f echo %f
C:\MyCave\iso\SDG\cmpdir>if exist C:\MyCave\iso\SDG\cmpdir\cp.exe echo C:\MyCave\iso\SDG\cmpdir\cp.exe
C:\MyCave\iso\SDG\cmpdir\cp.exe
C:\MyCave\iso\SDG\cmpdir>if exist C:\MyCave\iso\SDG\cmpdir\dirB\Abcd.exe echo C:\MyCave\iso\SDG\cmpdir\dirB\Abcd.exe
C:\MyCave\iso\SDG\cmpdir\dirB\Abcd.exe
C:\MyCave\iso\SDG\cmpdir>if exist C:\MyCave\iso\SDG\cmpdir\test-recur\2\def.exe echo C:\MyCave\iso\SDG\cmpdir\test-recur\2\def.exe
C:\MyCave\iso\SDG\cmpdir\test-recur\2\def.exe
C:\MyCave\iso\SDG\cmpdir>if exist C:\MyCave\iso\SDG\cmpdir\wspace\defg.exe echo C:\MyCave\iso\SDG\cmpdir\wspace\defg.exe
C:\MyCave\iso\SDG\cmpdir\wspace\defg.exe
Я знаю, что где-то есть небольшая ошибка. Запрос вашей помощи в ее решении.
Основываясь на ответе Герхарда и sst, я изменил свой скрипт следующим образом.
set rootFolder=%1
set destFolder=%2
for /r %rootFolder% %%f in ("*.exe") do if exist %%f move %%f %destFolder%
Я передаю аргументы командной строки для bat, как это. ..
exeRecur.bat "C:\MyCave\iso\SDG\cmpdir\test-recur" "C:\MyCave\iso\SDG\cmpdir\dirA"
Таким образом избегается жесткое кодирование путей.
С уважением