我想创建一个将运行的批处理脚本轴 wsdl2java.bat用于多个 WSDL。当我仅使用此代码创建批处理脚本时:
wsdl2java.bat
wsdl2java.bat
它只会运行一次 wsdl2java.bat。我猜是wsdl2java.bat 批处理脚本本身。
有人能帮我找出问题的根本原因吗?
答案1
为了与微软的兼容COMMAND
,微软CMD
有一个奇怪的语义,即在另一个命令脚本中调用一个命令脚本会终止该点的调用命令脚本。
正确的解决方法不是命令START
。也不是用CMD
(尤其是错误地使用/K
for /C
)调用辅助命令解释器进程。它是——而且已经存在了几十年——命令CALL
。
call wsdl2java.bat
call wsdl2java.bat
答案2
用于cmd.exe /k filename.bat
启动每个批处理文件。
答案3
如果我没记错的话,当您从另一个批处理文件启动它时,Windows 会完全切换到新的批处理文件并且不会返回。
解决方法是执行
start wsdl2java.bat
—— 再次重申,这只是我的想法。我在谷歌上搜索了很久,没找到可靠的来源。
更新:正如 JdeBP 指出的那样,我的方法错了。几十年来,我都没有接触过 MSDOS 或 Windows CMD-shell 或如今叫它什么的,这也许太明显了。
更新2:天哪,我说的是“脱口而出”。
答案4
根据这个解决方案, 这也取决于里面的命令。例如,如果我们在其中调用 npm 脚本,我们应该使用 call 命令运行脚本。