2012-11-22 20 views
18

मैं विंडोज बैच फ़ाइल के साथ एक प्रोग्राम शुरू करना चाहता हूं। लेकिन कार्यक्रम एक निश्चित टाइमआउट मूल्य के बाद बंद होना चाहिए। उदाहरण के लिए: प्रोग्राम 60 सेकंड चलाएं और इसे 60 सेकंड के बाद रोक दें।विंडोज 7 के तहत किसी प्रक्रिया के लिए टाइमआउट कैसे सेट करें?

लिनक्स के तहत, यह अच्छा करने के लिए यह अच्छा timeout कमांड है। विंडोज़ में timeout कमांड भी है, लेकिन इसके निष्पादन में देरी करने के लिए, केवल एक कमांड को रोकने के लिए। ऐसा करने के लिए विंडोज के तहत कुछ और है?

सेटअप: विंडोज 7, 64 बिट, व्यावसायिक

उत्तर

26
start yourprogram.exe 
timeout /t 60 
taskkill /im yourprogram.exe /f 
+0

धन्यवाद, बहुत अच्छा काम करता है। क्या टास्किल के साथ एक और बैच स्क्रिप्ट को रोकना भी संभव है? मैं यह नहीं समझ सका कि यह कैसे करें। –

+3

कोई समस्या नहीं, यह थोड़ा और मुश्किल है। चूंकि वे सभी एक ही 'cmd.exe' प्रक्रिया के तहत हैं, तो आपको उन्हें अलग करने का एक और तरीका चाहिए। आप इसे 'स्टार्ट "माइबैच" बैचफाइल.बैट' जैसे विशिष्ट शीर्षक दे सकते हैं, फिर आप टास्ककिल का उपयोग 'टास्ककिल/फाई' जैसे विन्डोज़िट ईक मायबैच "/ एफ' –

+0

@ जॉन पर कर सकते हैं, आपको शीर्षक कमांड का उपयोग करके पहले स्क्रिप्ट्स को बल्लेबाजी करने की आवश्यकता है । – ElektroStudios

3

Windows में किसी भी कमांड मौजूद नहीं है कोई एप्लिकेशन देरी करने के लिए या किसी ऐप के लिए समय समाप्त सेट करने के लिए

Windows में

समय समाप्त देरी के लिए है सीएमडी/बैटफाइल की निष्पादन प्रक्रिया, और अधिक उपयोगिता नहीं।

आप इसके लिए बाहरी उपकरण का उपयोग कर सकते हैं, मुझे अब किसी भी नाम का याद नहीं है, बहुत सारे भूमिगत सॉफ्टवेयर, क्षमा करें, लेकिन मुझे याद है कि ऑटोिट आधिकारिक फ़ोरम में एक ऐप सेटिंग लॉन्च करने के लिए एक समान कमांडलाइन टूल मौजूद है टाइमआउट, और शायद एनआईआरसीएमडी, या ps2exec उपकरण में, उनकी सहायता फ़ाइलों, या WAIK किट के अंदर कोई भी जांचें।

यह केवल आप क्या कर सकते हैं:

@Echo OFF 

:: First launch the app in background mode, because some applications stops the execution of CMD. 
Start /B ".\Dir\Your app.exe" 

:: Then stay in background for a certain time 
Timeout /T "Seconds" 

:: Continue your code... 
Pause&Exit 
+0

स्पष्टीकरण के लिए धन्यवाद! –

10

बाली सी एक संक्षिप्त और बिंदु जवाब देने के लिए दे दी है। मुझे कुछ और अधिक फीचर और पुन: प्रयोज्य की आवश्यकता थी। बाली सी के उदाहरण के आधार पर। मैं इसके साथ आया था। अगर किसी को भी मेरे जैसा ही चाहिए।

your.bat

REM... 

CALL STARTwaitKILL..bat /relative/path/your_program.exe 

REM... 

STARTwaitKILL.BAT

@ECHO OFF 
IF[%1]==[] GOTO EOF 
IF NOT EXIST %1 GOTO EOF 

REM SET PRIORITY=/NORMAL 
REM ADJUST PRIORITY, BELOWNORMAL LETS BATCH FILE RUN MORE SMOOTHLY 
REM WITH A PROGRAM THAT CONSUMES MORE CPU. SEE ABOUT MAXWAIT BELLOW 
SET PRIORITY=/BELOWNORMAL 
REM SET PRIORITY=/LOW 
REM 0 NORMAL WINDOW :: 1 NO WINDOW :: 2 MINIMIZED WINDOW 
SET /A HIDDEN=1 
REM MAXWAIT HERE IS MORE LIKE MINIMUM WAIT IN WINDOWS. 
SET MAXWAIT=10 
SET WAITCOUNT=0 

SET ARGS=/I %PRIORITY% 
IF %HIDDEN% EQU 1 SET ARGS=%ARGS% /B 
IF %HIDDEN% EQU 2 SET ARGS=%ARGS% /MIN 

START %ARGS% %1 

:WAIT 
IF %WAITCOUNT% GEQ %MAXWAIT% GOTO KILL_IT 

TIMEOUT /T 1 > NUL 
SET /A WAITCOUNT+=1 
FOR /F "delims=" %%a IN ('TASKLIST ^| FIND /C "%~nx1"') DO IF %%a EQU 0 GOTO RUN_DONE 
GOTO WAIT 

:KILL_IT 
TASKKILL /IM %~nx1 /F > NUL 
:RUN_DONE 

प्राथमिकता है और इस तरह के लिए और अधिक तर्क लेने के लिए अयस्क बाहर fleshed हो सकता है, लेकिन मैं इसे के लिए की जरूरत नहीं है। जोड़ना मुश्किल नहीं होना चाहिए।

+0

बहुत उपयोगी, बहुत धन्यवाद! –

+0

इस संस्करण का पूरा समय समाप्त होने की प्रतीक्षा न करने का लाभ है जब प्रक्रिया जल्द समाप्त हो जाती है। यदि आप उनकी परवाह नहीं करते हैं तो केवल प्राथमिकता और छिपी हुई सामग्री को अनदेखा करें। – ndemou