从powershell脚本向cmd.exe发送“任意密钥”

时间:2013-01-16 16:39:46

标签: powershell

我有以下PowerShell脚本:

cmd /c script1.bat
cmd /c script2.bat

执行结束时的script1.bat有“暂停”命令,因此我的PS脚本的执行停止。

如何发送任何密钥cmd.exe以避免停止脚本执行? 注意:我无法更改批处理脚本 - 它们是第三方。

4 个答案:

答案 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