ขีด จำกัด เวลาบรรทัดคำสั่งของ Windows


9

ฉันจะไปเกี่ยวกับการ จำกัด เวลาดำเนินการของโปรแกรมบรรทัดคำสั่งใน windows ได้อย่างไร ฉันรู้ว่าใน Linux มีหมดเวลา / timelimit ใช้ได้ แต่ฉันไม่สามารถหาโปรแกรมอรรถประโยชน์ที่คล้ายกันสำหรับ windows


อาจเป็นการดีที่สุดที่จะเขียนสคริปต์ Powershell หรือ Python เพื่อทำสิ่งนี้
Breakthrough

คำตอบ:


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

หากคุณใส่สิ่งนี้ลงในแผ่นจดบันทึกแล้วบันทึกเป็น.batมันจะสร้างไฟล์แบทช์ที่จะทำ

ฉันใช้ตัวอย่าง 10 วินาทีเพียงแค่ปรับตามความต้องการของคุณ

นอกจากนี้หากคุณกำลังใช้ Vista หรือสูงกว่าคุณสามารถทำให้pingเส้นแบ่งและใช้timeoutคำสั่งที่ง่ายขึ้นกว่าเดิม

timeout /t 10

1
สิ่งนี้จะจัดการข้อโต้แย้งและโปรแกรมของคุณหลายอินสแตนซ์ได้อย่างไร มันคงจะดีถ้าเริ่มต้นที่จะกลับมาเป็น PID แต่ไม่มีโชคเช่น ...

start yourprogram.exe yourargumentsคุณสามารถส่งผ่านข้อโต้แย้งกับ ใช่มันtaskkillมีตัวเลือกในการฆ่าโดย PID แต่คุณจะต้องดึงมันออกมาจากtasklistชื่อแรกซึ่งจะกลับมาที่สี่เหลี่ยมหนึ่งถ้าคุณมีหลายอินสแตนซ์ นี่เป็นเพียงข้อ จำกัด cmd
บาหลี C

1
1 การใช้ปิงเป็นตัวจับเวลา timout เป็นความคิดที่ตลก :)
Kol

ผนวก> NULกับpingคำสั่งเพื่อสควอชมันเอาท์พุท
starbeamrainbowlabs

4

อย่างที่ฉันรู้ว่าดูเหมือนว่าไม่มีฟังก์ชั่นดังกล่าวอยู่ แต่ฉันคิดว่ามันเป็นไปได้ถ้าคุณทำให้มันทำงานเป็นงาน windows ผ่าน Task Scheduler จากนั้นคุณสามารถตั้งข้อ จำกัด ของการดำเนินการการตั้งชื่อเป็น: หยุดงานถ้ามันทำงาน ยาวกว่า:คุณสามารถรับรายละเอียดเพิ่มเติมได้จากที่นี่: http://technet.microsoft.com/en-us/library/cc722178.aspx


3

หากคุณสามารถจะใส่ใจกับการใช้ 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%เพื่อฆ่าแอปพลิเคชันที่เริ่มต้น


1

สารละลาย :

ใน 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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.