बैच फ़ाइल के निष्पादन के बाद कंसोल के ऑटो-समापन को कैसे रोका जाए


509

फ़ाइल के निष्पादन के बाद कंसोल के ऑटो-समापन को रोकने के लिए मैं एक बैच फ़ाइल के अंत में क्या कमांड रख सकता हूं?


5
यह अच्छा होगा अगर पता लगाने का एक तरीका है यदि एक्सप्लोरर में एक .cmd फ़ाइल को doubleclick द्वारा शुरू किया गया था (तब आप इसे अंत में रोकना चाहते हैं) या यदि यह पहले से खुली कमांड लाइन द्वारा शुरू किया गया था। बाद के मामले में (और विशेष रूप से अगर किसी अन्य कार्यक्रम द्वारा निष्पादित किया जाता है) तो आप रोकना नहीं चाहते हैं। मुझे इस मामले के लिए एक अच्छा समाधान मिला (और आम तौर पर एक% NOPAUSE% चर का उपयोग करें, लेकिन यह केवल पेरेंट प्रोग्रामों के लिए काम करता है न कि पेरेमेट गोले के लिए)।
ग्रहण करता है

1
एक तरीका है: stackoverflow.com/questions/3551888/…
EM0

जवाबों:


634

Windows / DOS बैच फ़ाइलों में:

pause

यह एक अच्छा "Press any key to continue . . . "संदेश प्रिंट करता है

या, यदि आप "Press any key to continue . . ."संदेश नहीं चाहते हैं , तो इसके बजाय यह करें:

pause >nul

14
बल्ले फ़ाइल को डबल-क्लिक करने पर यहां कोई भी सुझाव मेरे लिए काम नहीं करता है। यह एक सर्वर वातावरण है (और मुझे इसमें स्क्रिप्ट को चलाना होगा), इसलिए वे व्यवहार को संशोधित कर सकते थे। यह मेरा लक्ष्य नहीं बदलता है। कमांड विंडो को खुला रखने के लिए, इसलिए मैं त्रुटि संदेश को टाइप कर सकता हूं।
हेनरिक एरलैंडसन

1
हाँ, यह हमेशा पर्यावरण के आधार पर काम नहीं करता है। अधिक मजबूत समाधान के लिए नीचे मेरा उत्तर देखें। अनिवार्य रूप से बस सेट / पी एक्ज़िटेक करें = "जारी रखने के लिए कोई भी कुंजी दबाएं ..."
स्टीवन मार्क Ford

सावधान रहें, यदि कोई आपकी स्क्रिप्ट को कंसोल विंडो (उदाहरण के लिए vbscript) के बिना चलाता है, तो यह तब तक लटका रहेगा जब तक आप इसे टास्क मैनेजर के माध्यम से नहीं मारते।
एंड्री

अगर मावेन जैसे कुछ का उपयोग CALL, stackoverflow.com/a/52205298/4485678
केविन रॉय

ठहराव पूरी तरह से यहाँ काम करता है
डेविडसन लीमा

141

सटीक सवाल पर निर्भर करता है!

आम तौर पर pauseएक .bat फ़ाइल के भीतर काम करता है ।

यदि आप चाहते हैं कि cmd.exe टाइप करना बंद करने में सक्षम न हो, cmd /kतो फ़ाइल के अंत में कमांड का उपयोग करें ।


2
यदि आप रन संवाद के माध्यम से विंडोज कमांड चला रहे हैं, तो cmd /kइसके बजाय अपनी कमांड से पहले रखें। & cmd /kकाम नहीं करेगा।
नौमेनन

68

यदि आप चाहते हैं कि cmd.exe बंद न हो, और टाइप करना, उपयोग करना जारी रखने में सक्षम हो cmd /k

बस स्पष्ट करने की आवश्यकता महसूस हुई कि /k(विंडोज़ वेबसाइट से) क्या करता है:

/k : स्ट्रिंग द्वारा निर्दिष्ट कमांड को जारी रखता है और जारी रखता है।

तो cmd /kबैट फाइल के अंत में फॉलो अप कमांड के बिना बस cmd.exeआगे के उपयोग के लिए खिड़की खुली रहेगी ।

दूसरी ओर pauseएक बैच फ़ाइल के अंत में प्रक्रिया को रोक दिया जाएगा और cmd.exeपहले बटन प्रेस पर समाप्त हो जाएगा


24

बैच फ़ाइल में कमांड रखने का नया तरीका नई कमांड प्रॉम्प्ट विंडो खोलेगा और नई विंडो स्वचालित रूप से बाहर नहीं निकलेंगी।

start "title" call abcd.exe param1 param2  
start "title" call xyz.exe param1 param2

2
मेरे मामले में, टर्मिनल कमांड को चलाने के दौरान मुझे कुछ त्रुटि हुई थी, और इसलिए, 'ठहराव' और 'cmd / k' कमांड ने मुझे त्रुटि के कारण कार्यक्रम को रोकने में मदद नहीं की। इस उदाहरण ने मुझे दिखाने में मदद की, मेरे पास त्रुटि है और टर्मिनल से काफी हद तक रुक गया। धन्यवाद!
HowDoYouTellForAChild 12

19

यदि आप मावेन का उपयोग कर रहे हैं और आप टाइपिंग को छोड़ना चाहते हैं और कंसोल को पास से रोक सकते हैं, तो परिणाम देखने के लिए आपको CALLस्क्रिप्ट में कमांड का उपयोग करने की आवश्यकता है , इसके अलावा सिर्फ 'mvan क्लीन इंस्टॉल'।

जैसे यह कंसोल को बंद कर देगा

ECHO This is the wrong exemple
mvn clean install
pause

इस तरह कंसोल खुला रहेगा

ECHO This is the right exemple
CALL mvn clean install
pause

यदि आप CALLकमांड का उपयोग नहीं करते हैं, तो न तो अतीत की छूट काम करेगी।


1
आपका बहुत बहुत धन्यवाद! यदि कमांड विफल हुआ, तो इसे बंद होने से रोकता है
तैमूर गिलौरी

1
इसने मेरे लिए काम किया। मैं 1 बैट फाइल में 2 डिफरेंट कमांड निष्पादित करना चाहता था। लेकिन मेरा संकेत पहले आदेश के बाद बंद हो गया। पुटिंग call <myCommand>ने इस समस्या को हल किया: मेरा प्रांप्ट पहले निष्पादन के बाद बंद होना बंद हो गया
ज़ोम्बी जूल

1
सबसे उपयोगी उत्तर
gianmarcocalbi

14

cmd.exeआप जिस कोड को निष्पादित करना चाहते हैं उसके नीचे एक नई पंक्ति के रूप में जोड़ें :

c:\Python27\python D:\code\simple_http_server.py

cmd.exe

यह वही है जो मैं देख रहा था, धन्यवाद! "ठहराव" केवल तब काम नहीं करने वाला जब आपकी पाइथन स्क्रिप्ट दुर्घटनाग्रस्त हो जाए। मैं जो चाहता था वह एक त्रुटि संदेश देखना है। अब तक मुझे कंसोल के माध्यम से अपनी अजगर लिपियों को चलाना था
user70960

लेकिन यह ठीक काम करता है:python script.py %1 && cmd
user70960

धन्यवाद! इससे मदद मिली! मैं अजगर अनुप्रयोगों को चलाने के लिए एक बैच फ़ाइल बना रहा था।
fez.tival

10

मेरा तरीका एक वास्तविक बैच ("foo.bat" कहकर) काम खत्म करने का है; फिर एक और "start.bat" बनाएं:

@echo off
cmd /k foo.bat

मुझे लगता है कि यह बेहद उपयोगी है जब मैं एक बार पर्यावरण चर स्थापित करता हूं।


1
आप फ़ाइल cmd /kके अंत में बस (बिना किसी आदेश के) रख सकते हैं foo.batऔर चला सकते हैं। आपको एक अलग start.batफ़ाइल की आवश्यकता नहीं है ।
ADTC


5

इसके अलावा pause

set /p=

उपयोग किया जा सकता है। यह उपयोगकर्ता इनपुट की उम्मीद करेगा और जब प्रवेश दबाया जाता है तो प्रवाह जारी करेगा।

या

runas /user:# "" >nul 2>&1

उपयोगकर्ता इनपुट से कुछ भी प्रदर्शित नहीं किया जाएगा और न ही कमांड इतिहास में रहेगा।


3

संभावना 1: बस 2 .bat फ़ाइलें बनाएं और पहले में लिखें:

start <filename> // name of 2nd batch file
exit

बैच फ़ाइल 2 वह फ़ाइल है जो अंत में बंद नहीं होगी। तो अब जब आप बैच nr.1 खोलते हैं। यह दूसरा और क्लो को शुरू करेगा। जब दूसरा खत्म हो जाता है तो यह पूरी तरह से बंद नहीं होगा (जब तक आप अंत में बाहर नहीं निकलेंगे)

संभावना 2: बैच फ़ाइल 1:

call <filename>
cls
echo End of file
pause
<any code you want>

जब दूसरी फ़ाइल समाप्त हो जाती है तो यह फिर से 1 फाइल करने के लिए आगे बढ़ेगा और बाकी के आउटपुट देगा। इसके साथ ही आप एरर हैंडलर भी बना सकते हैं। यदि nr.1 क्रैश हो जाता है तो यह nr.2 में चला जाता है और इसे प्रदर्शित करता है


2

यह छोटी सी हैक उपयोगकर्ता को एक कुंजी दर्ज करने के लिए कहती है और इसे चर% एक्ज़िटेक% में संग्रहीत करती है (इस चर को आप कुछ भी कह सकते हैं, हालांकि)।

set /p exitkey= "Press any key to continue..."

NB: '=' के बाद का स्थान बहुत महत्वपूर्ण है



2

मुझे पता है कि मुझे देर हो गई है लेकिन मेरा पसंदीदा तरीका है:

:programend
pause>nul
GOTO programend

इस तरह उपयोगकर्ता प्रवेश का उपयोग कर बाहर नहीं निकल सकता है।


मुझे लगता है कि हाँ, क्योंकि यह कंसोल को बंद होने से रोकने का एक बढ़ा हुआ तरीका है। भले ही उपयोगकर्ता एक कुंजी दबाता है, कंसोल खुला रहता है। उपयोगकर्ता को केवल कंसोल विंडो को बंद करके बाहर निकलने के लिए मजबूर किया जाएगा।

2

यहाँ जवाबों के साथ समस्या थी, इसलिए मैं इसे लेकर आया, जो मेरे लिए काम करता है (TM):

cmd /c node_modules\.bin\tsc
cmd /c node rollup_build.js
pause

1

यह करने के दो तरीके हैं यह उपयोग के मामले पर निर्भर करता है

1) यदि आप चाहते हैं कि विंडोज cmd शीघ्र खुला रहे ताकि आप निष्पादन परिणाम देख सकें और बाद में इसे बंद कर सकें; उपयोग

pause

2) यदि आप चाहते हैं कि विंडोज cmd खुला रहे और आपको कुछ कमांड आफ्टरवेयर निष्पादित करने की अनुमति दे; उपयोग

cmd

यहाँ छवि विवरण दर्ज करें


1

आराम से, बल्ले की अंतिम पंक्ति में cmd ​​जोड़ें, लेकिन! यदि आप अपना सिस्टम पथ रीसेट या साफ़ करते हैं, तो आपको अपना cmd पूर्ण पथ से शुरू करना होगा, जैसे:

%windir%\system32\cmd.exe

उदाहरण के लिए, मेरे पास इस तरह पुराने संस्करण में jdk रीसेट करने के लिए एक बैट फाइल है:

PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\apache-ant-1.7.1\bin
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
%windir%\system32\cmd.exe

चूँकि मैंने सिस्टम पथ को रीसेट कर दिया है, मुझे cmd को पूरे पथ के साथ चलाना है, या सिस्टम cmd.exe नहीं ढूँढ सकता है, यह cmd चलाने में विफल रहेगा, और बस विंडो को बंद कर देगा, और आप त्रुटि को नहीं देख सकते ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.