我有以下PowerShell脚本:
cmd /c script1.bat
cmd /c script2.bat
执行结束时的script1.bat有“暂停”命令,因此我的PS脚本的执行停止。
如何发送任何密钥cmd.exe以避免停止脚本执行? 注意:我无法更改批处理脚本 - 它们是第三方。
答案 0 :(得分:6)
您可以将输入管道传输到程序(cmd.exe),如下所示:
"X" | cmd /c script1.bat
答案 1 :(得分:0)
您可以将名为pause.bat
的空文件放在同一目录中。然后它什么都不做而不是暂停。
答案 2 :(得分:0)
批处理脚本可能是第三方,但您肯定可以只复制/备份并编辑内容以删除PAUSE命令吗?
如果我正在测试某些内容并且不希望窗口关闭,我有时会使用PAUSE,但是否则我无法想出保留该内容的充分理由。
答案 3 :(得分:-1)
由于bat文件路径中有表达式,因此我无法获得可接受的答案来为我工作。
"x" | $Env:WRAPPER_HOME\bat\installService.bat $LOGFILE
错误是“仅允许将表达式作为管道的第一个元素。”
这是我最后要工作的内容:
[PS脚本代码]
& runner.bat bat_to_run.bat logfile.txt
[runner.bat]
@echo OFF
REM This script can be executed from within a powershell script so that the bat file
REM passed as %1 will not cause execution to halt if PAUSE is encountered.
REM If {logfile} is included, bat file output will be appended to logfile.
REM
REM Usage:
REM runner.bat [path of bat script to execute] {logfile}
if not [%2] == [] GOTO APPEND_OUTPUT
@echo | call %1
GOTO EXIT
:APPEND_OUTPUT
@echo | call %1 1> %2 2>&1
:EXIT