Batch file 如何让代码在windows bat文件中的for循环后继续运行?
当我运行以下命令时,在运行Batch file 如何让代码在windows bat文件中的for循环后继续运行?,batch-file,windows,Batch File,Windows,当我运行以下命令时,在运行for循环后,会发生停止bat文件的情况,因为它从未输出“finish ls bat file!”和pause消息 test.bat: for /r %cd% %%i in (*.bat) do "subtest.bat" %%i echo "finish ls bat file!" pause 蝙蝠子测验 echo %~1 像这样使用调用: for /r %cd% %%i in (*.bat) do call "subtest.bat" %%i 下面是一个示例批
for
循环后,会发生停止bat文件的情况,因为它从未输出“finish ls bat file!”
和pause
消息
test.bat:
for /r %cd% %%i in (*.bat) do "subtest.bat" %%i
echo "finish ls bat file!"
pause
蝙蝠子测验
echo %~1
像这样使用
调用:
for /r %cd% %%i in (*.bat) do call "subtest.bat" %%i
下面是一个示例批处理文件(bat1.bat):
使用以下命令调用subtest.bat
:
echo foo
如果您运行它,您将获得以下输出:
foo
foo
bar
Press any key to continue . . .
通过在cmd行中键入以下命令,可以获得有关调用命令的更多信息:
当您从批处理文件执行批处理文件
时,它会有效地启动一个新实例并成功执行子测试.bat
,问题是,它永远不会返回到前一个实例来执行其余的代码,因此我们需要使用调用
在同一个实例中执行脚本,所以这是一个简单的更改,只需在(*.bat)中为/r“%cd%”%%i添加call
类似的内容,并调用“subtest.bat”%%i
谢谢您的回答!另一个问题是:bat和batch之间是一样的吗?!我以为bat是*.bat,batch是*.cmd,是不同的脚本!不是。批处理文件就是这样一个文件,它包含执行某个功能的批处理命令。批处理文件可以同时具有.bat
和.cmd
扩展名,其中.bat
是使用的旧扩展名,但仍然有效。@GerhardBarnard,“新实例”是什么意思?只是澄清一下:运行批处理文件(从另一个有或没有call
)不会初始化新的cmd
实例;只有执行控制从一个批处理文件传递到另一个批处理文件;使用call
可以将执行控制传递回调用批处理文件…@aschipfl是的,这就是我的意思,我不是指cmd的新实例,可能我的措辞有点模糊:)谢谢你的回答!这是我测试后的工作。你知道在哪里系统地学习bat脚本吗?@HsuAmanda实际上我喜欢这个学习windows批处理文件脚本的教程:
foo
foo
bar
Press any key to continue . . .
call /?