Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 循环浏览bat文件的所有子文件夹并执行bat文件?_Loops_Batch File_Call_Directory - Fatal编程技术网

Loops 循环浏览bat文件的所有子文件夹并执行bat文件?

Loops 循环浏览bat文件的所有子文件夹并执行bat文件?,loops,batch-file,call,directory,Loops,Batch File,Call,Directory,我试图在父目录中有一个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 Su

我试图在父目录中有一个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.......

文件夹结构使其更加清晰,请尝试以下操作:

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的方法。

C:\test\batfiletorun.bat C:\test\folder1\ C:\test\folder2\

要在folder1和folder2中运行batfiletorun.bat:

在命令提示下:

对于(*)中的/r/d%f,请按%f键并调用C:\test\batfiletorun.bat&popd

或者,使用.bat文件运行batfiletorun.bat时,只需%%而不是%,并且runbatfileinsubdirectories.bat由以下行组成,如下所示:

对于(*)中的/r/d%%f,请按“%%f”键并调用C:\test\batfiletorun.bat&popd

现在,您的输入如下所示: C:\test\batfiletorun.bat C:\test\runbatfileinsubdirectories.bat C:\test\folder1\ C:\test\folder2\


希望这能简化某些人的工作。我使用它在子目录中运行重命名bat文件

嗯,这似乎对我不起作用,但谢谢你的帮助。在“c:\bat files\callshow.bat”中放入@echo%cd%,然后再试一次。如果没有子目录,那么它将什么也不做。是的,那也不起作用。我添加了文件夹结构,也许这会有所帮助。现在你已经明确了callshow.bat的位置,我已经删除了callshow.bat.bat的路径,这两个都有效!谢谢你们,这一整天都快把我逼疯了!您使用的方法的一个问题是,工作目录始终是相同的—运行批处理的文件夹,而不是callshow.bat所在的文件夹。@foxidrive它确实提供了一个更简单的方法,并且可能是一个优势,具体取决于
callshow.bat
中的代码。。
for /r %%f in (callshow.b?t) do call "%%f"