【问题标题】:Loop through all sub folder of and execute bat File?循环遍历所有子文件夹并执行bat文件?
【发布时间】:2013-04-21 05:31:33
【问题描述】:

我试图在父目录中创建一个 bat 文件,该文件循环遍历子文件夹并运行一个名为 callshow.bat 的 bat 文件。

这是我到目前为止所得到的。我不太擅长这些,所以任何帮助都会很棒!

for /r %%f in (*) do Call callshow.bat

这是文件夹结构:

Example:
Parent:(Where new Bat file will be)
Sub Folder 1\folder1\callshow.bat
Sub Folder 2\folder2\callshow.bat
Sub Folder 3\folder3\callshow.bat
Sub Folder 4\folder4\callshow.bat
Sub Folder 5\folder5\callshow.bat
etc.......

【问题讨论】:

    标签: loops batch-file call directory


    【解决方案1】:
    @echo off
    for /r /d %%f in (*) do pushd "%%f" & Call "callshow.bat" & popd
    

    【讨论】:

    • 嗯,这似乎对我不起作用,但感谢您的帮助。
    • 在 "c:\bat files\callshow.bat" 中放入 @echo %cd% 然后试试看。如果没有子目录,那么它什么也不做。
    • 是的,那也没用。我添加了文件夹结构,也许这会有所帮助。
    • 既然您已经弄清楚 callshow.bat 的位置,我已经删除了 callshow.bat 的路径。
    • 两者都有效!谢谢大家,这让我一整天都发疯了!
    【解决方案2】:

    文件夹结构更清晰,试试这个:

    for /d /r %%i in (*) do if exist "%%i\callshow.bat" call "%%i\callshow.bat"
    

    编辑:这可能有效:

    for /r %%f in (callshow.b?t) do call "%%f"
    

    要从for /r 获得一致的结果,需要使用通配符,因此需要使用b?t,即使它将匹配callshow.bitcallshow.bbt 等。

    EDIT 2: 如果callshow.bat 不引用它所在文件夹中的任何文件,或者使用%~dp0 引用,则可以使用此方法(EDIT 之后的方法:)给他们。尤其是callshow.bat需要使用calling批处理文件所在文件夹中的文件时,请使用此方法。否则,可以使用foxidrive的方法。

    【讨论】:

    • 您使用的方法的一个问题是工作目录始终相同 - 您运行批处理的文件夹,而不是 callshow.bat 所在的文件夹。
    • @foxidrive 它确实提供了一种更简单的方法,并且可能是一个优势,具体取决于callshow.bat..中的代码。
    【解决方案3】:

    C:\test\batfiletorun.bat C:\测试\文件夹1\ C:\test\folder2\

    在文件夹 1 和文件夹 2 中运行 batfiletorun.bat:

    从命令提示符:

    for /r /d %f in (*) do pushd "%f" & Call C:\test\batfiletorun.bat & popd

    或者,使用 .bat 文件运行 batfiletorun.bat 将只有 %% 而不是 %,并且看起来如下所示,其中 runbatfileinsubdirectories.bat 包含以下行:

    for /r /d %%f in (*) do pushd "%%f" & Call C:\test\batfiletorun.bat & popd

    现在您的输入如下所示: C:\test\batfiletorun.bat C:\test\runbatfileinsubdirectories.bat C:\测试\文件夹1\ C:\test\folder2\

    希望这可以为外面的人简化事情。我用它在子目录中运行重命名 bat 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-25
      • 2017-04-06
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      相关资源
      最近更新 更多