2

我有以下 PowerShell 脚本:

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

script1.bat 在执行结束时有“暂停”命令,所以我的 PS 脚本的执行停止了。

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

4

4 回答 4

6

您可以像这样通过管道将输入输入到程序 (cmd.exe):

"X" | cmd /c script1.bat

于 2013-01-16T17:50:21.737 回答
0

pause.bat您可以在同一目录中放置一个名为的空文件。然后它什么也不做,而是暂停。

于 2013-01-16T16:41:32.000 回答
0

批处理脚本可能是第 3 方,但您肯定可以只复制/备份并编辑内容以删除 PAUSE 命令吗?

如果我正在测试某些东西并且不想关闭窗口,我有时会暂停,但否则我想不出一个很好的理由来保留它。

于 2013-01-16T16:43:17.877 回答
-1

由于 bat 文件路径中有一个表达式,我无法让接受的答案为我工作。

"x" | $Env:WRAPPER_HOME\bat\installService.bat $LOGFILE

错误是“表达式只允许作为管道的第一个元素。”

这是我的工作(最后):

【PS脚本代码】

& runner.bat bat_to_run.bat logfile.txt

[跑步者.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
于 2020-02-21T14:56:59.017 回答