循环遍历所有子文件夹并执行bat文件?
我想在父目录中有一个bat文件,它通过子文件夹循环并运行一个名为callshow.bat
的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.......
@echo off
for /r /d %%f in (*) do pushd "%%f" & Call "callshow.bat" & popd
的文件夹结构,使其更清晰,试试这个:
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.bit
和callshow.bbt
等
编辑2:这种方法(编辑后的一个:)可如果callshow.bat
没有引用它所在的文件夹中的任何文件,或者使用%~dp0
来引用它们,则使用它。特别是如果callshow.bat
需要使用位于call
ing批处理文件所在文件夹中的文件,请使用此方法。否则,可以使用foxidrive的方法。
谢谢!@ user2033427 – 2013-04-21 07:49:32
@IdeaBak如果有效,请注意:) – user2033427 2013-04-21 08:38:31
您使用的方法存在的一个问题是,工作目录总是相同的 - 您运行批处理的文件夹,而不是呼叫显示的文件夹.bat驻留。 – foxidrive 2013-04-21 08:59:36
C:\测试\ batfiletorun.bat C:\测试\ folder1中\ C:\测试\文件夹2 \
要运行的folder1和文件夹2 batfiletorun.bat:
从命令提示:
用于/ R/d在%F(*)做的pushd “%F” &调用C:\测试\ batfiletorun.bat & POPD
或者,batfiletorun.bat使用.bat文件运行只会有%%代替%,看起来像runbatfileinsubdirectories.bat包含以下行:
for/r/d %% f in(*)do pushd“%% f”& Call C:\ test \ batfiletorun.bat & POPD
现在在哪里你投入这个样子: C:\测试\ batfiletorun.bat C:\测试\ runbatfileinsubdirectories.bat C:\测试\ \ ç的folder1:\测试\文件夹2 \
希望这可以简化一些外面的人的事情。我用它在子目录中运行重命名bat文件。
嗯,这似乎并不适合我,但感谢您的帮助。将“c:\ bat files \ callshow.bat”中的 – 2013-04-21 05:46:39
放入@echo%cd%然后再试一下。如果没有子目录,那么它将不会执行任何操作。 – foxidrive 2013-04-21 06:06:11
是的,也没有工作。我添加了文件夹结构,也许这会有所帮助。 – 2013-04-21 07:01:01