सवाल बैच फ़ाइल कमांड PAUSE काम नहीं करता है


मैं कुछ चीजों में सहायता के लिए एक साधारण बैच फ़ाइल बना रहा हूं, और मेरे पास कुछ निर्देश हैं जो यह प्रिंट करता है साथ ही मैं चाहता हूं कि उपयोगकर्ता बाहर निकलने से पहले देखना चाहें। वर्तमान में, खिड़की बहुत जल्दी बंद हो जाती है। तो मैंने जोड़ा PAUSE फ़ाइल के अंत में, लेकिन यह काम नहीं करना चाहता है।

मैंने SO पर अन्य प्रश्नों को देखा और लाइन एंडिंग सुनिश्चित करने के लिए जांच की है CRLF और मेरे पास है CRLF फ़ाइल के अंत में।

कोई सुझाव?


44
2018-01-12 06:46


मूल


आप कुछ और गलत कर रहे हैं। मैंने अभी कोशिश की है और यह मेरे लिए बिल्कुल ठीक काम करता है। - Cody Gray♦
मैं ईमानदारी से नहीं जानता क्यों, लेकिन आज भी काम करना शुरू कर दिया है। इसके लिए मेरी माफ़ी, लेकिन मुझे नहीं पता कि क्या हुआ। मैंने स्क्रिप्ट भी नहीं बदला! - Samaursa


जवाब:


अगर अंतिम आदेश विफल रहता है तो काम नहीं करेगा।

आप जिस आदेश को चला रहे हैं उसके पीछे "कॉल" डालकर इसे ठीक कर सकते हैं (जो भी आदेश रोक से पहले है) तो विराम काम करेगा।

तो उदाहरण के लिए मेरे पास एक phpunit बैच फ़ाइल थी जो इस तरह दिखती थी:

phpunit tests/sometests.php
pause

जब phpunit विफल हुआ यह रोके बिना बस बाहर निकला। इसे बदलने से इसे सही तरीके से रोक दिया गया:

call phpunit tests/sometests.php
pause

108
2018-03-07 05:24



इसके लिए धन्यवाद, मेरे लिए भी काम किया। एक तरफ नोट पर, ऐसा लगता है कि इसे असफल होने की आवश्यकता नहीं है, अगर कमांड में किसी भी प्रकार का एक्जिट कोड (सफलता पर भी) है तो यह विंडो बंद कर देता है। - dann.dev
CALL अच्छी तरह से काम किया। - JSmyth
जोड़ा जा रहा है call व्यवस्थापक के रूप में चल रहे विंडोज 10 कमांड प्रॉम्प्ट पर मेरे लिए कोई प्रभाव नहीं पड़ा। मुझे नहीं पता क्यों pause मेरी बैच फ़ाइलों में आदेश (ऑटोहॉटकी द्वारा खोला गया) अचानक आज काम करना बंद कर दिया। मुझे नहीं पता कि क्या बदल गया। वे हफ्तों के लिए काम किया था। - Ryan
टिम के जवाब के अलावा, यदि आप खिड़की को हमेशा प्रदर्शित करना चाहते हैं, तो आप .bat फ़ाइल लिख सकते हैं जैसे: phpunit test / sometests.php cmd / k - Justin


रोकथाम से पहले अंतिम आदेश सफलतापूर्वक निष्पादित करता है? मन अपनी स्क्रिप्ट साझा करना - कम से कम पिछले कुछ कमांड?

वैकल्पिक रूप से, चूंकि आप Windows7 का उपयोग कर रहे हैं, टाइमआउट कमांड आज़माएं और देखें कि यह काम कर रहा है या नहीं।


3
2018-01-12 06:57



तो अगर pause  है कहा जाता है, यह काम करेगा। का उपयोग करते हुए timeout इसके बदले में यह नहीं बदलेगा (सिवाय इसके कि यह शेल-बिल्टिन के बजाय एक अलग प्रोग्राम को कॉल कर रहा है)। मेरा अनुमान होगा कि एक है goto :eof या exit /b कहीं से पहले pause (subroutines के साथ बैच फ़ाइलों में असामान्य नहीं - जहां आप उन्हें निष्पादित करने के लिए अंत में कमांड नहीं जोड़ सकते हैं)। - Joey
यदि अंतिम आदेश एक अपवाद फेंकता है, तो मेरा क्या मामला है? - Juan José Melero Gómez


मुझे इको पर भी समस्याएं थीं ... यह मानते हुए कि यह लंबे बैच फ़ाइल के कारण हुआ था ... रोक निष्पादित कर रहा था लेकिन यह रोक नहीं रहा था, यह लगभग इस तरह था कि विराम निष्पादित होने के बाद यह एक कुंजी दबा रहा था।

ऊपर सुझाए गए समाधानों का प्रयास किया; कोई काम नहीं किया।

तो बस भविष्य के संदर्भ के लिए, मैंने यह किया है:

मूल रूप से बस "रोकें> nul && रोकें> nul"; हर बार काम करता है।

@echo off

CALL :ForcePause "Press any key to resume."
ECHO.
ECHO Hello World!
ECHO.
CALL :ForcePause "Press any key to exit."

EXIT

REM You can remove echo if you don't want to pass custom string for pause
:ForcePause
echo %~1
pause > nul && pause > nul
GOTO :EOF

2
2018-01-30 16:43



pause > nul निश्चित रूप से काम करता है, बस संदेश नहीं देता है press any key... - T.S.
निश्चित रूप से सही दुनिया में, लेकिन जैसा कि मैंने कुछ बार उल्लेख किया है, इसलिए यह समाधान नहीं है। - Zunair


मुझे लगता है कि मुझे पता है कि मुद्दा कहां है, मुझे एक ही समस्या थी। तो यदि आप इसे इस तरह बना रहे हैं, तो आप एक नई फाइल बनाते हैं और इसके अंदर सभी बैच जानकारी डालते हैं और इसे सामान्य टेक्स्ट की तरह सहेजते हैं और इसके बाद बस एक्सटेंशन का नाम बदलें यह काम नहीं करेगा :)। आपको इसे टेक्स्ट एडिटर के माध्यम से सहेजना होगा और वहां से आपको "बैच फ़ाइल" चुननी होगी (।बल्ला;.cmd; *। nt) "उदाहरण के लिए नोटपैड ++, शायद यह एन्कोडिंग की वजह से ऐसा करता है और मुझे लगता है कि यह ठीक रहेगा। जीएल! :)


1
2018-04-25 23:34





टिम के जवाब के अलावा, यदि आप विंडो को हमेशा प्रदर्शित करना चाहते हैं, तो आप .bat फ़ाइल लिख सकते हैं जैसे:

call phpunit tests/sometests.php
cmd /k

0
2018-01-27 04:33



कृपया टिम के जवाब पर टिप्पणी के रूप में पोस्ट करें। यह अपने आप से एक पूर्ण जवाब नहीं है। - Marcel
@ मार्सल ने मेरा जवाब सिर्फ इसलिए दिया है क्योंकि मैं इसे टिप्पणी के बजाय उत्तर के रूप में छोड़ देता हूं? - Justin
हाँ, मैंने किया। यह अच्छा है, लेकिन यह वास्तव में एक टिप्पणी होना चाहिए। यह छोटा है और यह निश्चित रूप से उत्तर से बहुत करीबी से संबंधित है। - Marcel
@ मार्सल ठीक है मैंने मूल पोस्ट पर एक टिप्पणी जोड़ा, लेकिन मेरा जवाब यहां भी छोड़ देगा, टिप्पणी में कोड प्रारूप स्पष्ट नहीं है। - Justin


मेरी भी यही समस्या है। यह दो कारणों से होता है:
पहला ऐसा कब होता है बैच फ़ाइल को व्यवस्थापक के रूप में चला रहा है

मैंने अपनी बैच फ़ाइल डेस्कटॉप पर ले जाया है और इसे व्यवस्थापक के रूप में आजमाएं और यह ठीक काम करता है।
मैंने बैच फ़ाइल को किसी भी डिस्क रूट पर ले जाने की कोशिश की है (जैसे सी: \ डी: \ आदि) और यह सही तरीके से काम करता है।
मैंने बैच फ़ाइल को रिक्त स्थान के साथ किसी भी निर्देशिका में ले जाने का प्रयास किया है और यह सही तरीके से काम करता है।

दूसरा और मुख्य कारण यह है: बैच फ़ाइल की निर्देशिका में कुछ विशेष वर्ण (जैसे @ या & या ऐसा कुछ) था

बस इस विशेष चरित्र को ढूंढें और इसे फ़ोल्डर के नाम से हटा दें। और यह सही ढंग से काम करेगा।


0
2018-05-24 02:29