web-dev-qa-db-ja.com

Windowsコマンドラインの時間制限

Windowsでコマンドラインプログラムの実行時間を制限するにはどうすればよいですか? Linuxで利用可能なタイムアウト/時間制限があることは知っていますが、Windows用の同様のユーティリティを見つけることができませんでした。

9
ayu
start yourprogram.exe
ping 127.0.0.1 -n 10
taskkill /im yourprogram.exe

これをメモ帳に入れて.batとして保存すると、これを行うバッチファイルが作成されます。

例として10秒を使用しましたが、ニーズに合わせて調整してください。

また、Vista以降を使用している場合は、ping行を破棄して、代わりにはるかに簡単なtimeoutコマンドを使用できます。

timeout /t 10
9
Bali C

そのような関数は存在しないようですが、タスクスケジューラを介してWindowsタスクとして実行することで実行可能だと思います。そこから、実行の制限を設定できます。設定は次のようになります。タスクが次の時間より長く実行された場合は停止します:、ここから詳細を取得できます: http://technet.Microsoft.com/en-us/library/ cc722178.aspx

4
Simon Wang

PowerShellの使用に悩むことができる場合:_$app = Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt'_はtest.txtの引数でメモ帳を開始します(複数の引数は_,_で区切ることができます。

_Start-Sleep -Seconds 10_は10秒間スリープします。

$app.Kill()または_taskkill /PID $app.Id_のいずれかが、開始されたアプリケーションを強制終了します。

PowerShellのみを呼び出してプロセスを開始し、そのPIDを変数に格納するcmdソリューションを使用する場合は、for /F %A in ('powershell -Command "(Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt').Id"') do set PID=%A(。bat/.cmdから呼び出す場合は、_%%A_を使用する必要があります。 _%A_)の代わりに。次に、@ BaliCのタイムアウト方法と_taskkill /PID %PID%_を使用して、開始されたアプリケーションを強制終了できます。

3
mprill

解決策:

Windowsでは、3つのバッチファイルを作成する必要があります

process.bat

@ECHO OFF
start   /b cm.bat
start  cmd.exe /c run.bat
EXIT

cm.bat

@ECHO OFF
a.exe < input.txt > out.txt
taskkill /im a.exe /f
taskkill /im cmd.exe /f
EXIT

run.bat

@ECHO off
timeout /t 5
taskkill /im a.exe /f 
taskkill /im cmd.exe /f

EXIT

次に、process.batを実行します。 cm.batとrun.batの両方を同時に/並行して開始します。 cm.batのa.exeが終了したとき。 cm.batはrun.batを強制終了するため、ubuntuタイムアウトとして機能します。

1
shawon