Wie kann ich die Ausführungszeit eines Befehlszeilenprogramms in Windows begrenzen? Ich weiß, dass unter Linux Timeout / Timelimit verfügbar ist, aber ich konnte keine ähnlichen Dienstprogramme für Windows finden.
9
Wie kann ich die Ausführungszeit eines Befehlszeilenprogramms in Windows begrenzen? Ich weiß, dass unter Linux Timeout / Timelimit verfügbar ist, aber ich konnte keine ähnlichen Dienstprogramme für Windows finden.
Antworten:
Wenn Sie dies in den Editor einfügen und speichern,
.bat
wird eine Batchdatei erstellt, die dies ausführt.Ich habe 10 Sekunden als Beispiel verwendet, nur um Ihre Bedürfnisse zu optimieren.
Wenn Sie Vista oder höher verwenden, können Sie die
ping
Zeile verschrotten und stattdessen den viel einfacherentimeout
Befehl verwendenquelle
start yourprogram.exe yourarguments
. Ja, es würdetaskkill
eine Option zum Töten durch PID geben, aber Sie müssten estasklist
zuerst anhand des Namens extrahieren , der bei mehreren Instanzen wieder auf dem ersten Platz steht. Dies ist nur eine Einschränkung von cmd.> NUL
denping
Befehl hinzu, um die Ausgabe zu quetschen.Wie ich weiß, scheint es keine solche Funktion zu geben, aber ich denke, es ist machbar, wenn Sie sie als Windows-Task über den Taskplaner ausführen. Von dort aus können Sie eine Ausführungsbeschränkung festlegen, die folgende Einstellung hat: Stoppen Sie die Task, wenn sie ausgeführt wird länger als: können Sie hier weitere Details abrufen : http://technet.microsoft.com/en-us/library/cc722178.aspx
quelle
Wenn Sie
$app = Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt'
Probleme mit der Verwendung von PowerShell haben: Startet den Editor mit dem Argument test.txt (Sie können mehrere Argumente durch trennen,
.Start-Sleep -Seconds 10
wird für 10s schlafen.Entweder
$app.Kill()
odertaskkill /PID $app.Id
wird die gestartete Anwendung beenden.Wenn Sie eine cmd-Lösung bevorzugen, die nur PowerShell aufruft, um den Prozess zu starten und dann die PID in einer Variablen zu speichern:
for /F %A in ('powershell -Command "(Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt').Id"') do set PID=%A
(Wenn Sie von einer .bat / .cmd aufgerufen werden, müssen Sie%%A
stattdessen verwenden%A
). Sie können dann die Methoden von @ BaliC verwendentaskkill /PID %PID%
, um das Zeitlimit zu überschreiten und die gestartete Anwendung zu beenden .quelle
Lösung:
In Windows müssen drei Batch-Dateien erstellt werden
process.bat
cm.bat
run.bat
Führen Sie nun process.bat aus. Es startet sowohl cm.bat als auch run.bat gleichzeitig / parallel. Wenn a.exe von cm.bat endet; cm.bat beendet run.bat und funktioniert somit als Ubuntu-Timeout.
quelle