我想创建一个批处理脚本,该脚本将针对多个WSDL 运行wsdl2java.bat轴。当我仅使用以下代码创建批处理脚本时:
wsdl2java.bat
wsdl2java.bat
它只会运行一次wsdl2java.bat。我猜wsdl2java.bat批处理脚本本身有问题。
有人可以帮我找出问题的根本原因吗?
我想创建一个批处理脚本,该脚本将针对多个WSDL 运行wsdl2java.bat轴。当我仅使用以下代码创建批处理脚本时:
wsdl2java.bat
wsdl2java.bat
它只会运行一次wsdl2java.bat。我猜wsdl2java.bat批处理脚本本身有问题。
有人可以帮我找出问题的根本原因吗?
Answers:
为了与Microsoft兼容COMMAND
,Microsoft CMD
具有一种怪异的语义,即在另一个命令脚本中调用命令脚本会终止该命令脚本。
正确的解决方法不是该START
命令。它也不会调用辅助命令解释程序CMD
(尤其是错误地使用/K
for /C
)。这个CALL
命令已经执行了几十年了。
call wsdl2java.bat
call wsdl2java.bat
START
并CMD /C
在运行时不同CALL
的意思,他们是不是在这样的情况下,因为这些想要的方式。
call
MSDOS的一部分吗?还是DRDOS的一部分?
如果我没记错的话,当您从另一个批处理文件中启动Windows时,Windows会完全切换到新的批处理文件,并且不会返回。
解决方法是执行
start wsdl2java.bat
-再一次,从我的头顶开始。我在简短的Google研究中找不到可靠的来源。
更新:正如JdeBP所指出的,我的是旧的错误方法。可能很明显,我几十年来都没有接触过MSDOS或Windows CMD-shell或类似的东西。
Update2:哎呀,我说了“头顶”。
call
年之前的start
年代一样。我说这是错误的。仔细考虑start
实际做什么,并将其与发问者想要发生的事情进行比较和对比。