dim*_*dim 90 windows shell batch-file
可以通过多种方式从另一个批处理文件(或)或交互式cmd.exe提示符调用Windows批处理文件(called.bat或called.cmd):caller.batcaller.cmd
called.batcall called.batcmd /c called.batstart called.bat我很难根据他们的帮助文本区分他们的预期用法:何时使用哪一个?例如,为什么我可以使用'call'命令而不是直接调用.有什么不同?
我对一些摘要报告很感兴趣,这些摘要报告从各种观点分析了所有4种可能性(以及其他可能缺失的可能性):它们被设计为适合的推荐用例,处理产生,执行上下文,环境,返回代码处理.
注意:我使用的是Windows XP SP3.
Kyl*_*ons 97
批处理文件将由当前cmd.exe实例(或新的cmd.exe实例,例如,在资源管理器中双击)执行.
与#1相同,仅在批处理/ cmd文件中使用时有效.在没有"调用"的批处理文件中,父批处理文件结束并且控制传递给被调用的批处理文件; 'call'运行子批处理文件,父批处理文件继续调用后的语句.
在新的cmd.exe实例中运行批处理文件.
Start将在新窗口中的新cmd.exe实例中运行批处理文件,并且调用者不会等待完成.
小智 5
从这里的评论中不清楚的一件事是:当您仅使用其名称(原始问题中的案例#1)从另一个批处理文件调用一个批处理文件时,执行将从调用批处理文件停止。例如,在这些行中:
called.bat
echo Hello
Run Code Online (Sandbox Code Playgroud)
'echo Hello' 行(及其后的任何内容)将不会被调用。如果您使用“call”关键字,则在调用后继续执行。所以在这种情况下:
call called.bat
echo Hello
Run Code Online (Sandbox Code Playgroud)
'echo Hello' 行将被调用。
此外,在调用的.bat 文件中设置的所有变量也将传递回调用进程。
想象一个有这一行的“被调用的.bat”文件:
set MYVAR=hello
Run Code Online (Sandbox Code Playgroud)
然后, %MYVAR% 可用于调用批处理文件,如果它使用:
call called.bat
Run Code Online (Sandbox Code Playgroud)
但是,它不会使用
REM starts a new cmd.exe process
start called.bat
REM stops and replaces current cmd.exe process with a new one
called.bat
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
48286 次 |
| 最近记录: |