批处理文件循环遍历子文件夹并使用子文件夹名称作为变量

时间:2015-10-11 21:34:41

标签: loops variables batch-file subdirectory

这是我的第一篇帖子,因为我有一个批处理文件循环子文件夹并使用子文件夹名称作为命令变量的麻烦。我设法使代码足够先进并运行,但不断重复运行主目录中的最后一个文件夹名称。它找不到并循环浏览其他子文件夹。

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在循环之外,但我不能让它们在循环中动态更新。

非常感谢一些帮助。

1 个答案:

答案 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"
)