CMD中使用START /WAIT执行脚本后出现"More?"提示的问题排查
解决批处理脚本通过管道执行后出现"More?"提示的问题
问题原因
"More?"提示是因为你通过管道|将curl输出的脚本内容传给cmd /q /k执行时,cmd进程在脚本执行完毕后仍处于监听标准输入的状态,未收到输入结束信号,因此会等待更多内容输入。尤其是start /wait mainfile.bat执行完成后,回到父cmd进程,输入流未关闭,触发了该提示。
解决办法
方法1:避免管道执行(推荐)
改为先将脚本下载到本地临时文件再执行,彻底规避管道输入的问题:
curl --silent https://raw.githubusercontent.com/***/***/main/script.bat > "%temp%\run_script.bat" cmd /q /k "%temp%\run_script.bat" del "%temp%\run_script.bat"
方法2:修改执行命令,关闭输入流
在管道执行命令中,给cmd添加输入结束信号,让它不再等待更多输入:
- 方式A:用
nul关闭输入流
curl --silent https://raw.githubusercontent.com/***/***/main/script.bat | cmd /q /k <nul
- 方式B:追加空行结束输入
curl --silent https://raw.githubusercontent.com/***/***/main/script.bat | cmd /q /k & echo.
方法3:修改原脚本,结束批处理上下文
在script.bat的最后一行添加exit /b,结束当前批处理的执行上下文,让父cmd进程不再等待输入:
@echo off set "folder=%random%%random%%random%" mkdir "%temp%\%folder%" cd "%temp%\%folder%" curl --silent <link> >mainfile.bat curl --silent <link> >mainfile2.bat curl --silent <link> >mainfile3.bat curl --silent <link> >mainfile4.bat curl --silent <link> >mainfile5.bat ::some tasks involving downloaded batch files here... del mainfile3.bat del mainfile4.bat del mainfile5.bat start /wait mainfile.bat 2>nul rmdir "%temp%\%folder%" @exit /b
内容的提问来源于stack exchange,提问作者ItsSuperPlayz
相关产品推荐
相关产品推荐

