Windows cmd脚本执行ng build后停止不执行后续命令如何解决
问题根因
Windows环境下npm全局安装的Angular CLI提供的ng命令,本质是存放在npm全局路径下的ng.cmd批处理脚本。在cmd批处理文件中直接调用其他批处理文件时,当前脚本会将执行控制权完全移交到被调用的批处理,被调用批处理执行完毕后会直接终止整个批处理执行上下文,不会返回原脚本执行后续指令,这就是echo命令始终不触发的原因。
解决方案
优先使用call命令调用ng指令,这是cmd原生提供的、专门用于在批处理中调用其他脚本且执行结束后返回原流程的指令,修改后的test.cmd内容如下:
call ng build echo Done. > done.txt
修改后直接运行脚本,ng build执行完成后会自动继续执行后续的echo命令,正常生成done.txt文件。
如果不想使用call,也可以通过启动独立cmd子进程的方式调用ng命令,写法如下:
cmd /c ng build echo Done. > done.txt
该方式会额外启动一个独立的cmd子进程执行ng build,子进程执行结束后自动关闭,回到原脚本继续执行后续逻辑,缺点是会多产生一次进程启动的开销,非特殊场景优先选择call的写法。
内容的提问来源于stack exchange,提问作者ruttergod
相关产品推荐
相关产品推荐

