在Windows批处理文件中,myScript.bat运行otherScript.bat,在otherScript.bat中的第一行有一个暂停。
我该如何发送跳过myScript.bat中暂停的按键?这样我的脚本就不需要采取任何额外的按键,并且不会被暂停所阻塞。
我该如何发送跳过myScript.bat中暂停的按键?这样我的脚本就不需要采取任何额外的按键,并且不会被暂停所阻塞。
echo
命令来代替您进行按键操作。@echo OFF
@echo Calling otherScript.bat...
@echo | call otherScript.bat
@echo Done.
pause
@echo Hello World
Stefan的解决方案更加灵活,允许您控制何时暂停或不暂停,但如果由于某种原因无法修改otherScript.bat,则此解决方案将起作用。
你可以修改 otherScript.bat 文件,使其接受一个可选参数,告诉它跳过暂停命令,如下所示:
if "%1"=="nopause" goto start
pause
:start
< NUL
而不是echo( |
。
@echo OFF
@echo Calling otherScript.bat...
set var=One
< NUL call otherScript.bat
@echo Done. var=%var%
@echo off
pause
echo Hello World
set var=two
主要的区别是,其他脚本在同一个cmd.exe实例中运行,但是echo. | call ...
将在子cmd.exe中运行。
子实例存在问题,即其他脚本可以修改环境变量,但更改在返回后会丢失。
@echo. | call otherScript.bat
(注意echo后面有一个点)。这样只会发送一个新行给另一个脚本,而不是发送字符串“ECHO is on.”或者类似的字符串。当另一个脚本中使用set /p
命令时,发送字符串可能会产生负面效果。 - 816-8055