我试图递归遍历目录并在其中查找exe文件。
这是文件夹结构
C:\MyCave\iso\SDG\cmpdir
---------------\FolderA
------------------abc.txt
---------------\FolderB
------------------def.exe
---------------\FolderC
------------------ghi.dll
以下是我的蝙蝠sin。
set f="C:\MyCave\iso\SDG\cmpdir\test-recur"
for /r %%f in ("*.exe") do if exist %%f echo %%f
尽管它可以正常工作并列出C:\MyCave\iso\SDG\cmpdir
中的exe文件,但我想列出仅存在于C:\MyCave\iso\SDG\cmpdir\test-recur
目录中的exe文件。
这是我当前的输出。
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
我知道某个地方有一个小错误。需要您的帮助来解决它。
根据Gerhard和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"
像这样避免对路径进行硬编码。
致谢