命令行等待输入,然后处理下一步

时间:2018-12-17 15:34:06

标签: powershell cmd exe

我正在编写一个批处理脚本来自动化某些过程。 此过程分阶段运行一些不同的工具,这些工具创建运行下一阶段所需的输入。

基本上,在其中一个阶段中,我打开一个.exe文件并调用一个powershell文件来模拟“ enter key”按下,到目前为止,它很好,它打开了工具并开始运行运行它,但是发生了什么该命令行无需等待.exe文件完成即可执行下一阶段,这是重要的一步,因此该进程将为下一阶段创建输入。

我使用的命令行是:

START /WAIT powershell -command .\bat.ps1

运行此powershell脚本

[System.Diagnostics.Process]::Start("C:\folder\file.exe", "C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode")

$wshell = New-Object -ComObject wscript.shell;
$wshell.AppActivate('title of the application window')
Sleep 1
$wshell.SendKeys('~')

我想知道是否有一种解决方法,让我等到.exe文件完成运行,然后再开始新阶段。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

我找到了一种解决方法,可以部分回答我的问题。

我将START / WAIT命令放在powershell命令之后,因此,.exe运行时,下一阶段正在等待,但是一旦{{1 }}文件完成,这是一个开始。

再次感谢

答案 1 :(得分:0)

您是否尝试过使用Start-Process -FilePath "$env:USERPROFILE\Downloads\OneDriveSetup.exe" -ArgumentList “/peruser /childprocess /cusid:$cusid /silent” –wait [System.Diagnostics.Process]::Start($newexepath) | Out-Null #$newexepath = "c:\users\test\appdata\local\microsoft\OneDrive\OneDrive.exe" cmdlet并包含Start-Process参数来代替对Start()的直接调用?

在powershell提示符下,尝试-Wait来查看诸如help start-process之类的其他参数是否也对您有用。