ฉันจะไปเกี่ยวกับการ จำกัด เวลาดำเนินการของโปรแกรมบรรทัดคำสั่งใน windows ได้อย่างไร ฉันรู้ว่าใน Linux มีหมดเวลา / timelimit ใช้ได้ แต่ฉันไม่สามารถหาโปรแกรมอรรถประโยชน์ที่คล้ายกันสำหรับ windows
ฉันจะไปเกี่ยวกับการ จำกัด เวลาดำเนินการของโปรแกรมบรรทัดคำสั่งใน windows ได้อย่างไร ฉันรู้ว่าใน Linux มีหมดเวลา / timelimit ใช้ได้ แต่ฉันไม่สามารถหาโปรแกรมอรรถประโยชน์ที่คล้ายกันสำหรับ windows
คำตอบ:
start yourprogram.exe
ping 127.0.0.1 -n 10
taskkill /im yourprogram.exe
หากคุณใส่สิ่งนี้ลงในแผ่นจดบันทึกแล้วบันทึกเป็น.bat
มันจะสร้างไฟล์แบทช์ที่จะทำ
ฉันใช้ตัวอย่าง 10 วินาทีเพียงแค่ปรับตามความต้องการของคุณ
นอกจากนี้หากคุณกำลังใช้ Vista หรือสูงกว่าคุณสามารถทำให้ping
เส้นแบ่งและใช้timeout
คำสั่งที่ง่ายขึ้นกว่าเดิม
timeout /t 10
start yourprogram.exe yourarguments
คุณสามารถส่งผ่านข้อโต้แย้งกับ ใช่มันtaskkill
มีตัวเลือกในการฆ่าโดย PID แต่คุณจะต้องดึงมันออกมาจากtasklist
ชื่อแรกซึ่งจะกลับมาที่สี่เหลี่ยมหนึ่งถ้าคุณมีหลายอินสแตนซ์ นี่เป็นเพียงข้อ จำกัด cmd
> NUL
กับping
คำสั่งเพื่อสควอชมันเอาท์พุท
อย่างที่ฉันรู้ว่าดูเหมือนว่าไม่มีฟังก์ชั่นดังกล่าวอยู่ แต่ฉันคิดว่ามันเป็นไปได้ถ้าคุณทำให้มันทำงานเป็นงาน windows ผ่าน Task Scheduler จากนั้นคุณสามารถตั้งข้อ จำกัด ของการดำเนินการการตั้งชื่อเป็น: หยุดงานถ้ามันทำงาน ยาวกว่า:คุณสามารถรับรายละเอียดเพิ่มเติมได้จากที่นี่: http://technet.microsoft.com/en-us/library/cc722178.aspx
หากคุณสามารถจะใส่ใจกับการใช้ PowerShell:
$app = Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt'
จะเริ่มต้น Notepad กับข้อโต้แย้งของ test.txt ,
(ให้คุณสามารถแยกการขัดแย้งหลายคนโดย
Start-Sleep -Seconds 10
จะนอน 10 วินาที
ไม่ว่าจะ$app.Kill()
หรือtaskkill /PID $app.Id
จะฆ่าแอปพลิเคชันที่เริ่มต้น
หากคุณต้องการโซลูชัน cmd ที่จะเรียกใช้ PowerShell เพื่อเริ่มกระบวนการแล้วเก็บ PID ไว้ในตัวแปร:
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%
เพื่อฆ่าแอปพลิเคชันที่เริ่มต้น
สารละลาย :
ใน windows จำเป็นต้องสร้างไฟล์แบตช์สามไฟล์
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 พร้อมกัน / parallely เมื่อ a.exe จาก cm.bat สิ้นสุดลง cm.bat ฆ่า run.bat และมันจะทำงานเป็น ubuntu timeout