Batch file .bat运行子文件夹中的所有.bat

Batch file .bat运行子文件夹中的所有.bat,batch-file,Batch File,我想创建一个批处理文件(run.bat)来执行名为execute的子目录中的所有文件 我在这里看到了一些示例,但没有成功地根据我的需求定制它们 run.bat,其子文件夹可能位于任何位置。因此,需要相对文件夹引用 e、 g c:\somelocation\包含run.bat c:\somelocation\execute\包含我要运行的所有其他批处理文件 如果能够以30秒的间隔启动它们,那也太好了 .bat编程对我来说是完全陌生的,因此任何帮助都将不胜感激 @echo off pushd c

我想创建一个批处理文件(run.bat)来执行名为
execute
的子目录中的所有文件

我在这里看到了一些示例,但没有成功地根据我的需求定制它们

run.bat,其子文件夹可能位于任何位置。因此,需要相对文件夹引用

e、 g

  • c:\somelocation\包含run.bat
  • c:\somelocation\execute\包含我要运行的所有其他批处理文件
如果能够以30秒的间隔启动它们,那也太好了

.bat编程对我来说是完全陌生的,因此任何帮助都将不胜感激

@echo off
pushd c:\somelocation\execute
for /f "delims=" %%x in ('dir /b /a-d *.bat') do start "" "%%x"&timeout /t 30 >nul
popd
我们应该完成这项工作。切换到该位置,执行每个
.bat
文件,启动每个文件后等待30秒



编辑:是,应该是
timeout
而不是
choice
。使用
选项
,它需要参数
/t 30/d y

这将使用相对文件夹并添加延迟

@echo off
for %%a in ("execute\*.bat") do (
   pushd "%%~dpa"
   call "%%~nxa"
   timeout /t 30 /nobreak >nul
   popd
)
pause

非常感谢。但这与run.bat无关。也许我们需要使用前面提到的
%~dp0
。我做了那个更改(pushd%~dp0\execute),它成功了。但是run.bat有一个错误
错误:无效语法/仅当指定了/D时才能指定T。键入“CHOICE/?”了解用法。
另外,30秒的暂停时间也没有遵守。我的两个测试批处理文件同时运行。我认为这与错误有关。啊-您的相对目录-使用
\execute
<代码>%~dp0表示“批处理所在的目录”。如果在提示下键入
path
,将显示一个目录列表,目录列表用分号分隔。这是用于查找不在当前目录中的可执行文件的文件列表。选择任意,然后运行
yourbatchname
将执行该批处理,而不管您当前的目录如何-您不需要在任何地方都使用它。如果你大量使用批处理,你可以考虑添加一个特殊的目录(<代码>批量< /代码>是流行的,也就是代码> BelFury ),并设置你的<代码>路径>代码>以包括那个目录。我不太理解你所说的大部分内容。尽管如此,我还是尝试了
\execute
,结果相同。它起作用了。。。但是由于上面的错误,没有30秒的停顿,我无法让它工作。运行bat只会闪烁CMD窗口,而不会在子文件夹中运行我的测试bat。将
暂停
命令作为最后一行。如果您使用的是XP或更早版本,那么您将不会有
timeout
命令,并且必须使用ping.Pause使第一个shell窗口保持打开状态,但子文件夹中的.bat都不会运行(它们也有暂停)。仅供参考,我使用的是Win7。谢谢,但我得到的结果与您复制和粘贴时出错的结果相同。它很好用。或者您的文件夹不是execute,或者execute文件夹中没有bat文件。如果您在屏幕上看到错误消息,请告诉我它们是什么。