2017-02-11 17 views
0

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 
+3

Powershell/Batchハイブリッドを作ることはできますが、それはそうではありません。 – SomethingDark

+0

私は 'tasklist/fi" imagename eq myprogram.exe "を使用します。 findstr "some 'correct' string" && my program_done'を "無限"のgotoループで実行します。私はマックにいるので、シンタックスをチェックできませんでした。より明確化が必要な場合は、月曜日に提供することができます。 – nephi12

答えて

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' 

A Whileループがあなたの友人です。

今、なぜバッチファイルでこれをやりたいのか分かりません。起動が簡単な場合は、スクリプトパスの引数を使用してPowerShell.exeへのショートカットを作成し、起動する必要があります(ExecutionPolicyが正しく設定されている限り)。それについてご質問がありましたら、お知らせください。

関連する問題