【问题标题】:run a batch file inside various folders at a time一次在各种文件夹中运行一个批处理文件
【发布时间】:2016-10-29 14:49:34
【问题描述】:

说,我有 20 个文件夹,名为 folder0 到 folder20,每个文件夹中都有一个 test.bat 文件。我想通过另一个批处理文件一次运行每个文件夹中的所有批处理文件。如果我使用以下批处理文件,它将一个接一个地运行每个文件夹中的 test.bat:

FOR /L %%A IN (0,1,20) DO (
 cd folder%%A
 call test.bat 
 cd..
) 

但是我将如何并行运行每个文件夹中的批处理文件?

【问题讨论】:

  • 有时甚至专家也会走错路;-) 只需在您的批次中将call 替换为start。你知道你会得到 21 个窗口吗?

标签: windows batch-file


【解决方案1】:

我认为除了遍历列表或使用索引作为您要使用的路径的一部分之外,没有其他方法。没有内置方法可以递归地运行文件夹中可用的每个 .bat

但是,您可以使用 this 之类的东西将路径获取到 for 循环变量中,然后执行以下操作:

call %%X\test.bat

例子:

FOR /F %%A IN ('dir /ad /b /s') DO (
 echo %%A\test.bat
 call %%A\test.bat 
)

甚至可以看到在哪里启动了什么。

【讨论】:

    【解决方案2】:

    也许:

    For /R %%A In (t?st.bat) Do Start "%%~nA" /D"%%~dpA" "%%~A"
    

    ...只要确保脚本是从包含 20 个编号文件夹的目录中运行的。

    【讨论】:

    • for /R 不会在文件系统中搜索test.bat,因为() 之间没有通配符,它​​只是递归地枚举整个目录树并将test.bat 附加到每个项目;此外,OP 不想递归搜索test.bat,而是只在一个目录级别中搜索;要克服这一切,请使用for /D %%D in (folder*) do for /F %%F in ('dir /B test.bat') do start "" /D "%%~dpF" "%%~F",例如...
    猜你喜欢
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 2015-03-04
    • 2014-10-15
    • 2019-05-23
    • 2015-07-07
    相关资源
    最近更新 更多