私のコンピューターは最高ではありませんが、プレイするための最小限の要件を満たしています GTA V 。ゲームをより速く実行したかったので、通常の.exeを使用する代わりに、これはゲームの起動に使用するバッチファイルです。
start Steam://rungameid/271590
timeout 60
wmic process where name="GTA5.exe" CALL setpriority "high priority"
wmic process where name="gtavlauncher.exe" CALL setpriority "idle"
wmic process where name="subprocess.exe" CALL setpriority "idle"
したがって、基本的にゲームの起動後に優先順位が設定されるため、GTA5.exeのみが実行され、CPUはそれに付随する他のプロセスを無視します。さらにスムーズに実行したかったので、Windowsのテーマを「クラシック」に変更すると役立つので、cmdコマンドでテーマを変更できる program をダウンロードして、このスクリプトを作成しました-
START c:\ThemeSwitcher classic
start Steam://rungameid/271590
timeout 60
wmic process where name="GTA5.exe" CALL setpriority "high priority"
wmic process where name="gtavlauncher.exe" CALL setpriority "idle"
wmic process where name="subprocess.exe" CALL setpriority "idle"
wait process where name="GTA5.exe"
-----------------------------------------------------------
start c:\ThemeSwitcher MY PC
「----------」には、テーマを通常に変更する前に、プロセスが終了するのをファイルに待機させるものを入れたいので、手動で行う必要はありません。私はグーグルを使用したいくつかのバッチコマンドしか知りません、そして今のところそれは役に立ちません。英語が下手でごめんなさい。
次のようなバッチを作成します。
title i'm waiting
start /wait /high cmd /ktitle kill me
echo This is the end
pause
start
コマンドとwait
パラメーターがどのように機能するかを確認できます
pause
でバッチを作成できます。バッチウィンドウでスペースにヒットした後、次のコマンドを実行します。
あなたはおそらくwaiting for terminate existing process
のようなものを探しています:
echo do somthing at start
:start_test
::wait ~6s -1s = 5s
::you can use TIMEOUT 5
call :sleep 6
wmic process where name="notepad.exe" get name |find "notepad.exe">nul
if %errorlevel%==0 goto :start_test
echo do somthing at the end
::pause
goto :eof
:sleep
ping 127.0.0.1 -n %1 > nul
goto :eof
テストプロセスは5秒ごとに存在し、間隔を変更できます。
新しいプロセスを1つだけ起動する別のアプローチは、PowerShellを使用することです。
Get-Process
コマンドレットを使用して、名前でプロセスを見つけることができます。各プロセスオブジェクトにはWaitForExit
メソッドがあり、予想どおり、そのプロセスが停止するまでブロックされます。したがって、このPowerShellコマンドは、GTA5.exe
、gtavlauncher.exe
、およびsubprocess.exe
が終了するまでハングします。
Get-Process 'gta5', 'gtavlauncher', 'subprocess' | % {$_.WaitForExit()}
これにより、それらの名前を持つすべてのプロセスが検索され、それぞれが終了するのを待ちます。プロンプトは、すべてなくなるまで戻ってきません。
これを使用して、PowerShellを起動し、そのコマンドを指定してバッチスクリプトをブロックできます(エイリアスを使用して少し短縮しました)。
powershell -command "gps 'gta5','gtavlauncher','subprocess'|%{$_.WaitForExit()}"
プロセスが終了すると、PowerShellは終了し、バッチスクリプトに制御を戻します。