सवाल "बैच जॉब (वाई / एन)" पुष्टि कैसे समाप्त करें?


Cmd में, जब हम Ctrl + C दबाते हैं तो हमें लक्ष्य एप्लिकेशन समाप्त कर दिया जाता है, लेकिन यदि लक्ष्य एप्लिकेशन को बैच फ़ाइल से कॉल किया जाता है, तो हमें यह "टर्मिनेट बैच जॉब (वाई / एन)" पुष्टिकरण मिलता है। मैं कभी भी एक उदाहरण याद नहीं कर सकता जहां मैंने बैच नौकरी को समाप्त नहीं करना चुना। हम इस पुष्टि को कैसे छोड़ सकते हैं?


133
2017-09-04 12:39


मूल


क्या आपने कभी एसजीएमओआर के जवाब का प्रयास किया था? superuser.com/questions/35698/... - Arjan
"मैं कभी भी एक उदाहरण याद नहीं कर सकता जहां मैंने बैच नौकरी को समाप्त नहीं करना चुना।" और वास्तव में, ज्यादातर मामलों में, नौकरी समाप्त हो जाती है भले ही आप जवाब न दें ... - PhiLho
@PhiLho - यह सच नहीं हो सकता है, क्योंकि मेरी स्क्रिप्ट हमेशा दर्ज होने के बाद जारी रहती है N। मैं उत्सुक हूं कि आपके पास कौन सा परिदृश्य है जहां बैच स्क्रिप्ट आपके प्रवेश के बाद समाप्त हो जाती है N। - dbenham
मैं उम्मीद कर रहा था कि यह आसान होगा, लेकिन सामान्य रूप से माइक्रोसॉफ्ट ने गधे में कुछ दर्द किया है। नीचे दिए गए उत्तर इस मामूली परेशानी से बचने के लिए बहुत अधिक प्रयास कर रहे हैं। मुझे बस इतना परेशान है कि इसे हल करने का कोई आसान तरीका नहीं है। गंभीरता से माइक्रोसॉफ्ट, इस प्रॉम्प्ट का मुद्दा क्या है? हाँ मुझे यकीन है, यही कारण है कि मैंने Ctrl + C दबाया ... - Chev
यह समस्या कम से कम मुझे याद रखने और इसका उपयोग करने के कारण है -n साइगविन के लिए स्विच करें पिंग अक्सर। - palswim


जवाब:


AFAIK आप ऐसा नहीं कर सकते क्योंकि यह व्यवहार कमांड दुभाषिया द्वारा डिजाइन और नियंत्रित द्वारा किया जाता है। जब तक आप दुभाषिया को सीधे संकलित और पुन: संकलित नहीं करते हैं, तब तक "मैपिंग" या यहां तक ​​कि "अवरोध" करने की कोई विधि नहीं है।


44
2017-09-04 12:42



यह निराशाजनक है :( - Srikanth
हाँ यह निराशाजनक है। और भी निराशाजनक यह है कि BREAK कमांड, जो डिफ़ॉल्ट रूप से XP के तहत कुछ भी नहीं करता है, प्रॉम्प्ट टॉगल करने के लिए उपयोग किया जा सकता था ... - Synetech
हालांकि यह सच हो सकता है कि दुभाषिया का उपयोग करके अलग-अलग व्यवहार नहीं कर सकता है start जैसे sgmoore पर सुझाव दिया superuser.com/questions/35698/... मेरे लिए एक बिल्कुल अच्छा कामकाज लगता है। - Arjan
यह रहा: superuser.com/a/498798/56101 - Totty.js


दबाएँ Ctrl+सी दो बार।


54
2017-09-04 18:28



यह काम नहीं करेगा बल्कि संकेत को दोहराएगा। - Joey
मेरे लिए पूरी तरह से काम किया, धन्यवाद! - captainclam
मैंने बस ऐसा करके अपना डेटाबेस मारा! लिपि "रोकें" पर प्रतीक्षा कर रही थी, इसलिए मैंने CTRL-C किया, और फिर प्रॉम्प्ट आया, इसलिए मैंने CTRL-C फिर से किया, और फिर बैच फ़ाइल हैप्ली ने अपना डेटाबेस हटा दिया, और हटा दिया! @देख superuser.com/questions/740004/... - Sebastien Diot
@vladr यह पकड़ने के लिए असीम रूप से आसान है Ctrl और टैप करें C फिर से बनाम बनाम Y फिर Enter। - Nick T
@ सेबेस्टियन डियट आपने एक ऐसी स्क्रिप्ट पर एक नई तकनीक की कोशिश की जिसमें डेटा को स्थायी रूप से नष्ट करने की क्षमता थी? वह है ... बहादुर। - Basic


इस पर साइट, मुझे एक प्रभावी समाधान मिला:

script2.cmd < nul

हर बार इसे टाइप करने की आवश्यकता नहीं है जब मैंने दूसरी स्क्रिप्ट बनाई है script.cmd ऊपर की रेखा के साथ एक ही फ़ोल्डर में। मैंने इस तकनीक का परीक्षण केवल एक्सपी पर किया है, लेकिन अन्य ने इसे विन 7 पर पुष्टि की है।

नाथन कहते हैं: दूसरा विकल्प निम्न कोड को script.cmd के शीर्ष पर रखना है जो एक ही फाइल में एक ही चीज़ करता है:

rem Bypass "Terminate Batch Job" prompt.
if "%~1"=="-FIXED_CTRL_C" (
   REM Remove the -FIXED_CTRL_C parameter
   SHIFT
) ELSE (
   REM Run the batch with <NUL and -FIXED_CTRL_C
   CALL <NUL %0 -FIXED_CTRL_C %*
   GOTO :EOF
)

42
2017-11-03 03:29



यदि आप बैच फ़ाइल को अपने भीतर से कॉल करते हैं (कॉल कमांड का उपयोग किए बिना), निष्पादन "स्थायी रूप से" स्थानांतरित किया जाता है। यदि एसटीडीआईएन को एनयूएल पर रीडायरेक्ट किया गया है, तो "टर्मिनेट बैच जॉब" प्रॉम्प्ट अभी भी दिखाई देगा, लेकिन इनपुट के लिए इंतजार नहीं करेगा (क्योंकि एसटीडीआईएन चला गया है)। यह मेरे लिए काम करता है ... - William
यह विंडोज 7 में काम करता है। - William
यह तब तक काम करता है जब तक आपको बैच में उपयोगकर्ता इनपुट की आवश्यकता न हो। - Augusto Men
@ विलियम, बस स्क्रिप्ट को बुलाकर मेरे लिए काम नहीं किया, लेकिन मैं एक कामकाज के साथ आया: @IF ""=="%1" (@%0 CALLED < nul) ELSE (@[your command])। खुद को बार-बार कॉल करता है, लेकिन दूसरी बार तर्क के साथ। यदि आपकी स्क्रिप्ट में तर्क हैं, तो आप संभावित रूप से पहले अप्रयुक्त स्थितित्मक तर्क का उपयोग कर सकते हैं। यदि आपकी स्क्रिप्ट में बहुत सारे तर्क हैं तो यह समस्याग्रस्त हो सकता है। मेरी स्क्रिप्ट को तर्क या उपयोगकर्ता इनपुट की आवश्यकता नहीं थी। - jpmc26
जेपीएमसी का जवाब मेरे लिए काम किया। यह डार्न टर्मिनेट (वाई / एन) गूंजता है? हालांकि अंत में संदेश हालांकि, लेकिन इसके लिए नहीं रुकता है। - ggb667


इंस्टॉल करें झंकार और "terminate_autoanswer" सेटिंग बदलें। सेटिंग्स फ़ाइल यहां होना चाहिए: C:\Users\<username>\AppData\Local\clink\settings

# name: Auto-answer terminate prompt
# type: enum
# Automatically answers cmd.exe's 'Terminate batch job (Y/N)?' prompts. 0 =
# disabled, 1 = answer 'Y', 2 = answer 'N'.
terminate_autoanswer = 1

यह तब किसी भी cmd.exe विंडो के साथ "बस काम करता है"। Cmd.exe पर पिग्गी-बैक को झुकाव के बाद, आपको क्या चल रहा है या अन्यथा बदलने की आवश्यकता नहीं है।

फ्रिकिन 'भयानक, आईएमओ!


22
2018-04-03 06:50



क्लिंक शानदार है लेकिन यह cmd.exe या Console2 का उपयोग करके मेरे लिए काम नहीं करता है। यह अभी भी पूछता है और यह स्वत: भर नहीं आता है। - iono
@tometoftom: क्या आपने ऊपर सेटिंग्स के रूप में सेटिंग्स फ़ाइल बदल दी? मुझे इसे काम करने के लिए ऐसा करना पड़ा। (ध्यान दें कि आपको Windows Vista और फ़ाइल पर फ़ाइल को सही तरीके से सहेजने के लिए व्यवस्थापक होना है ...) - Macke
हाँ, सेटिंग्स बदल के साथ। मैं एक व्यवस्थापक हूं :( मैंने सेटिंग्स फ़ाइल का शॉर्टकट बनाकर निष्पादन योग्य के लिए "व्यवस्थापक के रूप में चलाएं" के बराबर करने की कोशिश की, राइट-क्लिक करें -> गुण, शॉर्टकट टैब, उन्नत ... फिर "व्यवस्थापक के रूप में चलाएं" है धुंधली। - iono
आह, अभी भी कोई पासा नहीं है। गहरी सांस माइक्रोसॉफ्ट, भगवान के लिए ... - iono
@iono क्या आपके पास गैर-अंग्रेजी विंडोज संस्करण है? इस मामले में क्लिंक कुछ दिनों पहले 0.4.3 रिलीज होने तक प्रॉम्प्ट का ऑटो जवाब नहीं दे सका: github.com/mridgers/clink/releases/tag/0.4.3 - schlamar


यदि आपके आवेदन सामान्य रूप से खत्म होने के बाद बैच फ़ाइल में कुछ भी करने की आवश्यकता नहीं है, तो इसका उपयोग करें start कमांड यह सुनिश्चित करता है कि जब आप Ctrl-C दबाते हैं तो बैच फ़ाइल पहले ही समाप्त हो जाती है। और इसलिए संदेश प्रकट नहीं होगा।

उदाहरण के लिए:

@echo बंद

my_command = ping.exe सेट करें
my_params = -t www.google.com सेट करें

echo कमांड को 'स्टार्ट' द्वारा निष्पादित किया जाएगा:% my_command%% my_params%

:: जब / बी या / WAIT का उपयोग नहीं करते हैं, तो यह एक नई विंडो बनायेगा, जबकि
:: इस बहुत बैच फ़ाइल का निष्पादन वर्तमान विंडो में जारी रहेगा:

% my_command%% my_params% शुरू करें

गूंज।
गूंज 'लाइन' शुरू होने से पहले इस लाइन को निष्पादित किया जाएगा। तो यह
दूसरी विंडो में एक प्रेस Ctrl-C दबाए जाने से पहले बैच फ़ाइल गूंज जाएगी।
गूंज।

:: बस देखने के लिए 'रोकें' का उपयोग करने के लिए "जारी रखने के लिए कोई भी कुंजी दबाएं" देखने के लिए
:: 'echo' कमांड का आउटपुट। विंडो में Ctrl-C दबाएं सुनिश्चित करें
:: जो 'पिंग' कमांड चलाता है (इस विंडो में नहीं)। या बस हटा दें
:: अगली पंक्ति उलझन में:

ठहराव

(विंडोज एक्सपी पर परीक्षण किया गया।)


16
2017-09-04 13:33



मुझे नहीं पता कि क्या start वास्तव में मदद करेगा, लेकिन यह मेरे लिए व्यवहार्य लगता है। तो मुझे आश्चर्य है कि क्या डाउनवोट का तात्पर्य है कि यह काम नहीं करेगा? या शायद जो भी डाउनवॉटेड है उसे विंडोज़ नहीं पता start (या विशेष रूप से start /wait तथा start /b) कमांड? देख microsoft.com/resources/documentation/windows/xp/all/proddocs/... फिर। कृपया डाउनवोट की व्याख्या करें? - Arjan
start काम नहीं करेगा जब भी cmd बैच फ़ाइल चला रहा है, तो Ctrl + C को टैप करने से वर्तमान में चलने वाली प्रक्रिया समाप्त हो जाएगी और प्रश्न दिखाएगा। - Joey
+1 मेरे लिए काम करता है। हालांकि, / b Ctrl + C हैंडलिंग बंद कर देता है (जो परेशान है)। - Nick Bolton
यह ठीक है अगर आप बैच फ़ाइल को डबल-क्लिक कर रहे हैं। लेकिन अगर आप कंसोल में बैच फ़ाइल शुरू करते हैं तो क्या होगा? - Helgi
(विंडोज 7 से बात करते हुए, सुनिश्चित नहीं है कि एक्सपी पर लागू है) कल्पनातीत डेवलपर द्वारा किराए पर लिया गया माइक्रोसॉफ्ट कोड करने के लिए start आदेश करने के लिए मूर्ख निर्णय लिया शीर्षक एक ही समय में खिड़की के अनिवार्य और वैकल्पिक दोनों - एक भ्रमित तरीके से। तो अगर कभी तुम्हारा %my_command%डबल कोट्स में संलग्न है, यह बन जाता है शीर्षक खिड़की और पहले परम में %my_params% बन जाता है आदेश। सुरक्षित होने के लिए, उपयोग करें start "some title here" %my_command% %my_params%। सबसे अधिक उपयोग करें "" और डेवलपर को एक का उपयोग न करने के लिए अभिशाप /TITLE या /T शीर्षक सेट करने के बजाय विकल्प। - ADTC


मैं थोड़ी देर के लिए "टर्मिन बैच जॉब" प्रॉम्प्ट से बचने के लिए इस इच्छा से लड़ रहा हूं।

मेरा नवीनतम एपिफेनी एक उदाहरण को बदलकर हाथ की एक छोटी सी (या कंसोल विंडो) है cmd.exe दूसरे के साथ। यह आदेश / कार्यक्रम के माध्यम से निष्पादित करके पूरा किया जाता है start cmd /k तुरंत पीछा किया exit में .BAT फ़ाइल।

मूल कंसोल विंडो गायब हो जाती है और प्रतिस्थापन को साफ-सफाई से रोक दिया जा सकता है Ctrl-सी

ए के निम्नलिखित उदाहरण पर विचार करें traceroute जिसे बाधित किया जा सकता है Ctrl+सी, या उपयोगकर्ता को वापस लौटने, पूरा करने की अनुमति दी C:\> संकेत:

@echo off

set timeout=100
if not "%2"=="" set timeout=%2

start cmd /k tracert -w %timeout% %1
exit

एक नया कमांड दुभाषिया का पर्यावरण प्रतिस्थापन हर किसी के लिए नहीं हो सकता है, लेकिन, नग्न आंखों के लिए, दिखता है और मेरे लिए अच्छा काम करता है।


13
2018-05-16 17:05



+1 एक बहुत ही उपन्यास दृष्टिकोण और हालांकि मैं मानता हूं कि टीआई एक सटीक प्रतिस्थापन नहीं है, यह अच्छी तरह से काम करता है (यद्यपि आपने "सीएमडी.एक्सई की जगह" के साथ अपनी पोस्ट शुरू करने पर मुझे चिंता की थी - सुरक्षा अलार्म तब तक रिंग कर रहे थे जब तक मुझे उदाहरण नहीं मिला और एहसास हुआ अपका क्या मतलब था) - Basic
आपको उपयोग करना चाहिए exit /b बैच स्क्रिप्ट से बाहर निकलने के लिए - Sebastian Godelet
@ सेबेस्टियन गोडलेट: सामान्य रूप से यह अच्छी सलाह है, लेकिन यहां इरादा वास्तव में (मूल) कंसोल को बंद करना है खिड़की, यह देखते हुए कि लक्ष्य कमांड लॉन्च किया गया है नया खिड़की। - mklement0


ग्रिंगो का समाधान अच्छा है, लेकिन तर्क सूची के साथ पास होने वाली स्क्रिप्ट के साथ अच्छी तरह से काम नहीं करता है (यानी। python myscript.py %*), जबसे SHIFT अद्यतन नहीं करता है %*। वहां समाधान, लेकिन उनके पास कुछ सीमाएं हैं।

यहां संशोधन किया गया है जिसके साथ मैं समाप्त हुआ:

IF [%JUSTTERMINATE%] == [OKAY] (
    SET JUSTTERMINATE=
    python myscript.py %*
) ELSE (
    SET JUSTTERMINATE=OKAY
    CALL %0 %* <NUL
)

99. (9)% दोषहीन।


7
2018-02-12 11:33



यह काम नहीं करेगा अगर myscript.py stdin से पढ़ना चाहता है। - jamesdlin


देख यह ढेर ओवरफ्लो प्रश्न

हालांकि, cmd.exe पैचिंग कुछ ऐसा नहीं है जो मैं इसके लिए करूंगा।


4
2017-09-04 18:21





मेरे मामले में यह ping.bat फ़ाइल थी जो मेरी उपयोगकर्ता निर्देशिका में सही थी (सी: \ उपयोगकर्ता \ Vista में या सी: \ दस्तावेज़ों और सेटिंग्स \ XP में) जो बैच नौकरी को अनिश्चित रूप से पकड़ रहा था।

जब भी मैं कमांड प्रॉम्प्ट से पिंग चलाता हूं तो यह बैच फ़ाइल निष्पादित की गई थी जहां वर्तमान निर्देशिका मेरी उपयोगकर्ता निर्देशिका है। रन विंडो से पिंग-आईएनजी, या अन्य उपयोगकर्ता की निर्देशिका से अच्छी तरह से चल रहा था।

फ़ाइल को मेरे उपयोगकर्ता डीआईआर से हटा दिया गया और समस्या हल हो गई!


0
2018-01-06 14:08





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


0
2018-03-17 20:08