Làm thế nào tôi có thể đi về việc giới hạn thời gian thực hiện của một chương trình dòng lệnh trong windows? Tôi biết trong linux có thời gian chờ / thời gian có sẵn, nhưng tôi không thể tìm thấy các tiện ích tương tự cho windows.
Làm thế nào tôi có thể đi về việc giới hạn thời gian thực hiện của một chương trình dòng lệnh trong windows? Tôi biết trong linux có thời gian chờ / thời gian có sẵn, nhưng tôi không thể tìm thấy các tiện ích tương tự cho windows.
Câu trả lời:
start yourprogram.exe
ping 127.0.0.1 -n 10
taskkill /im yourprogram.exe
Nếu bạn đặt nó trong notepad và lưu nó vì .bat
nó sẽ tạo ra một tệp bó sẽ làm điều này.
Tôi đã sử dụng 10 giây làm ví dụ, chỉ cần điều chỉnh theo nhu cầu của bạn.
Ngoài ra, nếu bạn đang sử dụng Vista trở lên, bạn có thể loại bỏ ping
dòng và sử dụng timeout
lệnh dễ dàng hơn nhiều ở vị trí của nó
timeout /t 10
start yourprogram.exe yourarguments
. Vâng, nó sẽ taskkill
có một tùy chọn để giết bởi PID nhưng bạn sẽ phải trích xuất nó từ tasklist
đầu tiên dựa trên tên, nó trở lại ở ô vuông nếu bạn có nhiều trường hợp. Đây chỉ là một giới hạn của cmd.
> NUL
vào ping
lệnh để nén nó.
Như tôi biết dường như không có chức năng nào như vậy tồn tại, nhưng tôi nghĩ rằng nó có thể thực hiện được nếu bạn làm cho nó chạy như một tác vụ windows thông qua Trình lập lịch tác vụ, từ đó bạn có thể đặt giới hạn thực thi, cài đặt có tên là: Dừng tác vụ nếu nó chạy lâu hơn : , bạn có thể biết thêm chi tiết từ đây: http://technet.microsoft.com/en-us/l Library / cc722178.aspx
Nếu bạn có thể bị làm phiền với việc sử dụng PowerShell:
$app = Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt'
sẽ bắt đầu notepad với một đối số test.txt (bạn có thể tách nhiều đối số bằng cách ,
.
Start-Sleep -Seconds 10
sẽ ngủ trong 10 giây.
Hoặc là $app.Kill()
hoặc taskkill /PID $app.Id
sẽ giết ứng dụng đã bắt đầu.
Nếu bạn thích một giải pháp cmd sẽ chỉ gọi PowerShell để bắt đầu quá trình và sau đó lưu nó vào một biến:
for /F %A in ('powershell -Command "(Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt').Id"') do set PID=%A
(khi được gọi từ .bat / .cmd bạn phải sử dụng %%A
thay vì %A
). Sau đó, bạn có thể sử dụng các phương thức hết thời gian của @ BaliC và taskkill /PID %PID%
để tắt ứng dụng đã bắt đầu.
Giải pháp :
Trong cửa sổ, nó cần tạo ba tệp bó
quá trình
@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
chạy.bat
@ECHO off
timeout /t 5
taskkill /im a.exe /f
taskkill /im cmd.exe /f
EXIT
Bây giờ Chạy tiến trình.bat. nó sẽ bắt đầu cả cm.bat và run.bat đồng thời / song song. Khi a.exe từ cm.bat chấm dứt; cm.bat giết run.bat và do đó nó sẽ hoạt động như thời gian chờ của Ubuntu.