批处理文件遍历子文件夹并将子文件夹名称用作变量
Batch file to loop through subfolder and use subfolder name as variable
这是我的第一个 post 因为我在使用批处理文件循环遍历子文件夹并将子文件夹名称用作命令中的变量时遇到了一些麻烦。我已经设法使代码足够先进并且可以运行,但不断重复 运行 主目录中的最后一个文件夹名称。它不会找到并循环浏览其他子文件夹。
SETLOCAL EnableDelayedExpansion
SET MYPATH=H:\RAWBDA[=10=]1076\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 在循环之外,但我无法让它们在循环内动态更新。
非常感谢您的帮助。
解决方案很简单:枚举子文件夹并使用前缀 %%~nx
:
获取它们的名称
SET "MYPATH=H:\RAWBDA[=10=]1076\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"
)
这是我的第一个 post 因为我在使用批处理文件循环遍历子文件夹并将子文件夹名称用作命令中的变量时遇到了一些麻烦。我已经设法使代码足够先进并且可以运行,但不断重复 运行 主目录中的最后一个文件夹名称。它不会找到并循环浏览其他子文件夹。
SETLOCAL EnableDelayedExpansion
SET MYPATH=H:\RAWBDA[=10=]1076\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 在循环之外,但我无法让它们在循环内动态更新。
非常感谢您的帮助。
解决方案很简单:枚举子文件夹并使用前缀 %%~nx
:
SET "MYPATH=H:\RAWBDA[=10=]1076\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"
)