为什么批处理脚本不能全部运行?


Answers:


13

为了与Microsoft兼容COMMAND,Microsoft CMD具有一种怪异的语义,即在另一个命令脚本中调用命令脚本会终止该命令脚本。

正确的解决方法不是该START命令。它也不会调用辅助命令解释程序CMD(尤其是错误地使用/Kfor /C)。这个CALL命令已经执行了几十年

call wsdl2java.bat
call wsdl2java.bat

答案,以及解释。为我工作。一旦获得代表,我也会投票((
dugokontov

感谢您的正确答案。我也向您鞠躬致敬,但是您的语气却让您感到奇怪。但是,嘿,随便你的船。
brandtaetter 2011年

/ C仍然是一种有效的方法,只是不再首选。已弃用,但仍可使用...
Brian Knoblauch

不,Knoblauch先生。使用辅助命令解释器将防止脚本中所做的任何环境更改在最初调用的命令解释器中生效,这是直接调用脚本时的通常效果。双方STARTCMD /C在运行时不同CALL的意思,他们是不是在这样的情况下,因为这些想要的方式。
JdeBP 2011年

@JdeBP:是callMSDOS的一部分吗?还是DRDOS的一部分?
Nils,

1

使用cmd.exe /k filename.bat启动每个批处理文件。


0

如果我没记错的话,当您从另一个批处理文件中启动Windows时,Windows会完全切换到新的批处理文件,并且不会返回。

解决方法是执行

start wsdl2java.bat

-再一次,从我的头顶开始。我在简短的Google研究中找不到可靠的来源。

更新:正如JdeBP所指出的,我的是旧的错误方法。可能很明显,我几十年来都没有接触过MSDOS或Windows CMD-shell或类似的东西。

Update2:哎呀,我说了“头顶”。


1
是的,早在MSDOS时代就是如此。我不确定是否仍然如此。。。
surfasb

我并没有说它是旧的,尽管实际上它的年代几乎与1987 call年之前的start年代一样。我说这是错误的。仔细考虑start 实际做什么,并将其与发问者想要发生的事情进行比较和对比。
JdeBP 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.