特定程序关闭后,使用batch命令扩展显示

时间:2017-02-11 17:05:46

标签: windows powershell batch-file

我正在尝试创建一个启动Microsoft Flight Simulator X的批处理文件,并在启动时将视图模式从扩展切换到主显示。 这是我已经开始工作的部分。但是在退出FSX后,我希望视图模式切换回扩展。在那里遇到麻烦。到目前为止,我已经尝试了\wait命令,但这没有用。现在我正在尝试if((get-process,因为我读到批处理文件需要监视FSX是否正在运行或关闭以便继续前进,但我还没有得到它。这是非常新的,所以我不认为我理解这些命令是如何协同工作的。完整代码如下。我需要改变什么?

@echo off 
DisplaySwitch.exe /internal
Start "" "A:\Steam\steamapps\common\FSX\fsx.exe" 
Start "" "C:\Users\hamha\Desktop\FSISERVER - Shortcut"
Start "" "C:\Users\hamha\Documents\aismv120\AISmooth.exe"
Taskkill "" "FSISERVER"
Taskkill "" "AISmooth.exe"
if((get-process $fsx.exe -ErrorAction SilentlyContinue) -eq $Null){
Start-Process -FilePath "DisplaySwitch.exe /extend"
}
pause

1 个答案:

答案 0 :(得分:0)

我要简化这一点,因为我没有你想要运行的所有应用程序......但是你会得到这个想法:

# Run DisplaySwitch with your arguments
Start-Process 'DisplaySwitch.exe' -ArgumentList '/internal'

# Start your Simulator, and stop your other processes
Start-Process 'Notepad.exe'
Get-Process 'Microsoft.Photos' | Stop-Process -Force

# test that the application is in the process list, then sleep for 1 second, then test again
while(Get-Process 'Notepad' -ErrorAction SilentlyContinue){
    Start-Sleep -Seconds 1
}

# Application isn't in the process list, so run your exit code
Start-Process 'DisplaySwitch.exe' -ArgumentList '/extend'

While Loop 是你的朋友。

现在,我不确定您为什么要在批处理文件中执行此操作。如果它只是为了便于启动,您可以使用脚本路径的参数创建PowerShell.exe的快捷方式,它应该启动(只要您的ExecutionPolicy设置正确)。如果您对此有任何疑问,请与我联系。