Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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
Batch file 如何让代码在windows bat文件中的for循环后继续运行?_Batch File_Windows - Fatal编程技术网

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 /?