【问题标题】:Batch file to loop through subfolder and use subfolder name as variable批处理文件循环遍历子文件夹并使用子文件夹名称作为变量
【发布时间】:2015-10-11 21:34:40
【问题描述】:

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

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

非常感谢您的帮助。

【问题讨论】:

  • 子文件夹都具有相同长度的字符 LT50010762006058COA00 主目录中通常有 10 - 50 个 (H:\RAWBDA\001076\host) 试用实用程序所需的命令行如下跟随第一个子文件夹trial.exe "H:\RAWBDA\001076\host\LT50010762006058COA00\LT50010762006058COA00_B4.tif" "H:\RAWBDA\001076\host\LT50010762006058COA00\LT50010762006058COA00_B3.tif" "H:\RAWBDA\001076\host\LT50010762006058COA00\LT50010762006058COA00_B2.tif" "H:\RAWBDA\001076\host\LT50010762006058COA00\LT50010762006058COA00_B432.tif"
  • 每个子文件夹中大约有 10 个.tif 文件。但是,如果您在我的代码中注意到我手动选择了订单(_B4、_B3、B2 和 _B432),那么trial 可以使用正确的.tif 运行
  • 它不会让我编辑原始项目。我认为这是因为它是我的第一篇文章。 %%i 很好。我的批处理技能是初学者,我从其他脚本中复制东西。任何想法如何用嵌套循环解决这个问题
  • 同上> "H:\RAWBDA\001076\host\LT50010762006058COA00\LT50010762006058COA00_B4.tif" "H:\RAWBDA\001076\host\LT50010762006058COA00\LT50010762006058COA00_B3.tif" "H:\RAWBDA\001076\host\LT50010762006058COA00\LT50010762006058COA00_B2.tif" .tif 文件的名称是文件夹名称,带有 _BX,其中 X 从 1 到 9 不等
  • 好的,我有这个文件夹 H:\RAWBDA\001076\host\ 在这个文件夹中是具有唯一代码的子文件夹。例如,第一个文件夹是 LT50010762006058COA00。每个文件夹中都有 .tif 文件,均名为“subfoldername_BX.tif”,其中 X 从 1 到 9 不等。要运行试用命令,我只需遍历每个子文件夹并选择图像 B4、B3 和 B2。最后一行 B432 是一个合并三个 .tif 文件的文件。这是试验的输出。

标签: loops variables batch-file subdirectory


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    相关资源
    最近更新 更多