批处理脚本执行ng new后直接退出,如何让其等待命令完成?
问题解决:批处理中ng new执行后脚本直接退出
你的问题出在使用START /B /WAIT启动ng new命令,这个方式没有正确等待ng new的完整执行流程结束,导致后续的输入提示代码根本没机会运行。
解决方案1:直接运行ng new(推荐)
去掉START /B /WAIT,直接执行ng new %name%,批处理会自动等待该命令执行完成后,再继续执行后续代码:
@ECHO OFF SET /P name=Enter Site Name: cd C:\Users\eric\OneDrive\Desktop\GitHub\gig_work ng new %name% SET /P projects=Enter The Projects To Install: for %%a in ("%projects:,=" "%") do ( npm i @farley911/%%a )
解决方案2:如果必须使用START命令
如果因为特殊需求需要保留START,可以通过启动cmd窗口来包裹ng new命令,确保等待整个执行过程完成:
@ECHO OFF SET /P name=Enter Site Name: cd C:\Users\eric\OneDrive\Desktop\GitHub\gig_work START /WAIT cmd /c "ng new %name%" SET /P projects=Enter The Projects To Install: for %%a in ("%projects:,=" "%") do ( npm i @farley911/%%a )
原因说明
ng本质是一个批处理脚本(ng.cmd),使用START /B /WAIT直接启动它时,系统会创建一个新的cmd进程来执行该脚本,但这个进程可能在ng new的子任务还没完全结束时就提前退出,导致你的批处理脚本误以为命令已完成,直接执行后续代码甚至退出。直接运行ng new则会在当前批处理进程中执行,确保完全等待命令结束后再继续。
内容的提问来源于stack exchange,提问作者efarley
相关产品推荐
相关产品推荐

