Jak mogę ograniczyć czas wykonywania programu wiersza polecenia w systemie Windows? Wiem, że w systemie Linux dostępny jest limit czasu / limit czasu, ale nie byłem w stanie znaleźć podobnych narzędzi dla systemu Windows.
9
Jak mogę ograniczyć czas wykonywania programu wiersza polecenia w systemie Windows? Wiem, że w systemie Linux dostępny jest limit czasu / limit czasu, ale nie byłem w stanie znaleźć podobnych narzędzi dla systemu Windows.
Odpowiedzi:
Jeśli umieścisz to w notatniku i zapiszesz, ponieważ
.bat
utworzy to plik wsadowy, który to zrobi.Użyłem 10 sekund jako przykładu, po prostu dostosuj do swoich potrzeb.
Ponadto, jeśli używasz systemu Vista lub nowszego, możesz zeskrobać
ping
linię i użyć o wiele łatwiejszegotimeout
polecenia w jej miejscuźródło
start yourprogram.exe yourarguments
. Tak, miałbytaskkill
opcję zabicia przez PID, ale musiałbyś wyodrębnić go odtasklist
pierwszego na podstawie nazwy, która jest z powrotem na pierwszym miejscu, jeśli masz wiele instancji. To tylko ograniczenie cmd.> NUL
doping
polecenia, aby zgnieść jego wynik.Jak wiem, wydaje się, że taka funkcja nie istnieje, ale myślę, że jest wykonalna, jeśli uruchomisz ją jako zadanie systemu Windows za pomocą Harmonogramu zadań, stamtąd możesz ustawić ograniczenie wykonywania, ustawienie o nazwie: Zatrzymaj zadanie, jeśli zostanie uruchomione dłużej niż: można uzyskać więcej szczegółów tutaj: http://technet.microsoft.com/en-us/library/cc722178.aspx
źródło
Jeśli możesz mieć problem z używaniem PowerShell:
$app = Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt'
uruchomi notatnik z argumentem test.txt (możesz oddzielić wiele argumentów według,
.Start-Sleep -Seconds 10
będzie spał przez 10s.Albo
$app.Kill()
albotaskkill /PID $app.Id
zabije uruchomieniu aplikacji.Jeśli wolisz rozwiązanie cmd, które wywoła PowerShell tylko w celu uruchomienia procesu, a następnie zapisuje swój PID w zmiennej:
for /F %A in ('powershell -Command "(Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt').Id"') do set PID=%A
(gdy wywoływany z .bat / .cmd musisz użyć%%A
zamiast%A
). Następnie możesz użyć metod przekroczenia limitu czasu @ BaliC itaskkill /PID %PID%
zabić uruchomioną aplikację.źródło
Rozwiązanie :
W systemie Windows musi utworzyć trzy pliki wsadowe
process.bat
cm.bat
run.bat
Teraz uruchom proces.bat. uruchomi jednocześnie cm.bat i run.bat jednocześnie / równolegle. Gdy a.exe z cm.bat zakończy się; cm.bat zabija run.bat i dlatego będzie działać jako limit czasu Ubuntu.
źródło