这是我的第一篇帖子,因为我有一个批处理文件循环子文件夹并使用子文件夹名称作为命令变量的麻烦。我设法使代码足够先进并运行,但不断重复运行主目录中的最后一个文件夹名称。它找不到并循环浏览其他子文件夹。
SETLOCAL EnableDelayedExpansion
SET MYPATH=H:\RAWBDA\001076\host
for /d %%a in (%mypath%\*) do set "folderName=%%a"
echo %folderName%
for /d %%f in (%folderName%) do set myfolder=%%~nxf
echo %myfolder%
FOR /d /r %%i IN ('DIR /B %mypath%*.tif') DO (
trial.exe "%foldername%\%myfolder%_B4.tif" "%foldername%\%myfolder%_B3.tif" "%foldername%\%myfolder%_B2.tif" "%foldername%\%myfolder%_B432.tif"
)
我相信问题是FolderName和myFolder在循环之外,但我不能让它们在循环中动态更新。
非常感谢一些帮助。
答案 0 :(得分:6)
解决方案很简单:枚举子文件夹并使其名称使用前缀%%~nx
:
SET "MYPATH=H:\RAWBDA\001076\host"
rem Using quotes around "var=value" in case the path may contain spaces
for /d %%a in ("%mypath%\*") do (
echo Folder name: %%~nxa, full folder path: %%a
trial.exe "%%a\%%~nxa_B4.tif" "%%a\%%~nxa_B3.tif" "%%a\%%~nxa_B2.tif" "%%a\%%~nxa_B432.tif"
)