Windows 명령 행 시간 제한


9

Windows에서 명령 행 프로그램의 실행 시간을 제한하려면 어떻게해야합니까? 리눅스에서 사용 가능한 시간 초과 / 시간 제한이 있지만 Windows 용 유사한 유틸리티를 찾을 수 없다는 것을 알고 있습니다.


이를 위해 Powershell 또는 Python 스크립트를 작성하는 것이 가장 좋습니다.
획기적인

답변:


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

이것을 메모장에 넣고 저장하면 .bat배치 파일이 만들어 지므로 저장하십시오 .

예를 들어 10 초를 사용했으며 필요에 맞게 조정했습니다.

또한 Vista 이상을 ping사용하는 경우 줄을 긁어 내고 훨씬 쉬운 timeout명령을 대신 사용할 수 있습니다

timeout /t 10

1
이것은 프로그램의 인수와 여러 인스턴스를 어떻게 처리합니까? start가 PID를 반환하면 좋을 것입니다. 그러나 그러한 행운은 없습니다.

로 인수를 전달할 수 있습니다 start yourprogram.exe yourarguments. 예, taskkillPID로 죽일 수있는 옵션이 있지만 tasklist이름을 기반으로 처음 부터 추출해야 합니다. 여러 인스턴스가있는 경우 정사각형으로 돌아갑니다. 이것은 cmd의 제한 사항입니다.
발리 C

1
timout 타이머로 일 사용 핑 : 재미있는 아이디어
KOL

명령을 추가 > NUL하여 ping출력을 스쿼시하십시오.
starbeamrainbowlabs

4

:로 설정라는, 내가 더 같은 기능의 존재가 보인다 알고,하지만 난 당신이 실행의 제한이 설정할 수 있습니다에서이 작업 스케줄러를 통해 윈도우 작업으로 실행되도록 경우가 행할 생각으로 태스크가 실행되는 경우 정지 이상 : http://technet.microsoft.com/en-us/library/cc722178.aspx 에서 자세한 내용을 확인할 수 있습니다.


3

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%하여 시작된 응용 프로그램을 종료 할 수 있습니다.


1

해결책 :

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를 종료하므로 우분투 시간 초과로 작동합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.