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

Loops 批处理文件以循环子文件夹并使用子文件夹名称作为变量,loops,variables,batch-file,subdirectory,Loops,Variables,Batch File,Subdirectory,这是我的第一篇文章,因为我在批处理文件循环子文件夹并在命令中使用子文件夹名称作为变量时遇到了一些问题。我已经设法使代码足够高级,并且可以运行,但会不断重复使用主目录中的最后一个文件夹名运行。它不会查找并循环浏览其他子文件夹 SETLOCAL EnableDelayedExpansion SET MYPATH=H:\RAWBDA\001076\host for /d %%a in (%mypath%\*) do set "folderName=%%a" echo %folderName% f

这是我的第一篇文章,因为我在批处理文件循环子文件夹并在命令中使用子文件夹名称作为变量时遇到了一些问题。我已经设法使代码足够高级,并且可以运行,但会不断重复使用主目录中的最后一个文件夹名运行。它不会查找并循环浏览其他子文件夹

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在循环之外,但我无法让它们在循环内动态更新


非常感谢你的帮助

解决方案很简单:枚举子文件夹并使用前缀
%%~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"
)

所有子文件夹都具有相同长度的字符LT500107620006058Coa00。在主目录(H:\RAWBDA\001076\host)中通常有10-50个字符。试用实用程序所需的命令行对于第一个子文件夹
trial.exe“H:\RAWBDA\001076\host\LT500107620006058Coa00\LT500107620006058Coa00\u B4.tif”如下所示“H:\RAWBDA\001076\host\lt500107620006058coa00\lt500107620006058coa00_B3.tif”“H:\RAWBDA\001076\host\lt500107620006058coa00\lt500107620006058coa00_B2.tif”“H:\RAWBDA\001076\host\lt500107620006058coa00\lt500107620006058coa00_B432.tif”“
每个子文件夹中大约有10个
.tif
文件。但是,如果您注意到我在代码中手动选择了订单(_B4、_B3、B2和_B432),那么
试用版
可以使用正确的
运行。tif
它不允许我编辑原始项目。我想这是因为这是我的第一篇文章。%%i的观点很好。我的批处理技能是初学者,我从其他脚本复制东西。如何使用嵌套循环修复此问题,请与上面相同>
“H:\RAWBDA\001076\host\lt500107620006058coa00\lt500107620006058coa00\u B4.tif”“H:\RAWBDA\001076\host\lt500107620006058coa00\lt500107620006058coa00\u B3.tif”“H:\RAWBDA\001076\host\lt500107620006058coa00\LT50010762006058COA00\ltb2.tif”
tif文件的名称是带有_BX的文件夹名称,其中X从1到9不等。好的,我有这个文件夹H:\RAWBDA\001076\host\在这个文件夹中是具有唯一代码的子文件夹。例如,第一个文件夹是LT500107620006058Coa00。每个文件夹中都有.tif文件,所有文件都命名为“subfoldername_BX.tif”,其中X从1到9不等。要运行试用命令,我只需循环浏览每个子文件夹并选择图像B4、B3和B2。最后一行B432是一个组合三个.tif文件的文件。这是试验的结果。