बैच फ़ाइल कार्रवाई टॉगल करें


0

मेरे पास दो क्रियाएं हैं जिन्हें मैं एक साधारण .bat फ़ाइल का उपयोग करके चलाने की कोशिश कर रहा हूं। पहली बार फ़ाइल चलाने पर यह एक कमांड निष्पादित करने के लिए आगे बढ़ता है, दूसरी बार यह एक और निष्पादित करता है ... कुल्ला और दोहराएं।

आंतरिक कामकाज को जाने बिना मुझे लगता है कि यह बताने के लिए एक फ़ाइल बनाने की आवश्यकता होगी कि यह किस स्थिति में है। यहीं से मेरा ज्ञान समाप्त हो जाता है। इसे खींचने का एक सरल तरीका क्या है?

जवाबों:


0

वहाँ है। का उपयोग करते हुए स्टैक ओवरफ्लो पर यह पोस्ट एक उदाहरण के रूप में मुझे मिलता है:

(First_run नामक फ़ाइल बनाएं)

copy con first_run
42
^z

(एक बैच फ़ाइल बनाएँ, जो यह जाँच करे कि first_run मौजूद है)

Copy con mycommand.bat
Welcome to my_command.bat
pause  

IF EXIST D:\first_run
start /wait first_command

echo Your first command has been executed. Terminating now.
goto :EOF

echo first_run marker not found. 
echo starting the second command.
start second_command
^Z

गोटो का छोर बदसूरत है। मुझे यकीन है कि वहाँ एक क्लीनर तरीका होना चाहिए। लेकिन यह एक लंबे समय के बाद से मैं बैच फ़ाइलों का उपयोग किया है।

में परिवर्तित किया गया goto :EOF। धन्यवाद करन, अच्छी टिप।


1
यदि कोई सबरूटीन्स (CALL) नहीं हैं, GOTO :EOF काम करेगा।
Karan

0

यदि मैं प्रश्न को सही ढंग से पढ़ता हूं, तो आप चाहते हैं कि बैच फ़ाइल निष्पादन योग्य। Exe चलाए और फिर समाप्त हो जाए। अगली बार जब आप इसे चलाएंगे, तो आप इसे निष्पादन योग्य B.exe लॉन्च करना और समाप्त करना चाहते हैं। फिर अगली बार जब यह चलता है तो आप चाहते हैं कि इसे फिर से निष्पादित किया जा सके।

इस तरह एक मार्कर फ़ाइल बनाने का एक सरल तरीका होगा:

@echo off
REM change the current working directory to where the batch script is located
cd /d %~dp0

if exist %~dp0Anext.txt (
  call :A
  goto :EOF
)
if exist %~dp0Bnext.txt (
  call :B
  goto :EOF
)
if not exist %~dp0*next.txt (
  call :firstrun
  goto :EOF
)
goto :EOF

REM subroutines only below this point:
:A
REM you would launch executableA.exe here
echo AAA
echo B > Bnext.txt
del Anext.txt
goto :EOF

:B
REM you would launch executableB.exe here
echo BBB
echo A > Anext.txt
del Bnext.txt
goto :EOF

:firstrun
REM you would launch executableA.exe here
echo AAA
echo B > Bnext.txt
goto :EOF

यदि आप इसे विस्तारित करना चाहते हैं तो आप एक ही तर्क का पालन करके इसे तीन या अधिक एक्सक्यूबेल / स्क्रिप्ट के बीच घुमा सकते हैं।

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