2013-10-01 7 views
5

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

echo off 
:menu 
echo This is a simple cleanup and repair utility. Please select an option: 
echo 1 - Check the hard disk c:\ for errors and inconsistancies. 
echo 2 - Renew the IP address 
echo 3 - View IP Address information 
echo 4 - Check internet connection by pinging http://www.google.co.uk/ 
echo 5 - Start disk cleanup utility 
echo 6 - ping 192.168.0.1 
echo 7 - ping 192.168.1.1 
echo 8 - Open notepad 
choice /n /c:12345678 /M "Choose an option (1-8) " 
IF ERRORLEVEL == 1 GOTO CHKDSK 
IF ERRORLEVEL == 2 GOTO RENEW 
IF ERRORLEVEL == 3 GOTO DISPLAYIP 
IF ERRORLEVEL == 4 GOTO PINGGOOGLE 
IF ERRORLEVEL == 5 GOTO CLEANMGR 
IF ERRORLEVEL == 6 GOTO PING0 
IF ERRORLEVEL == 7 GOTO PING1 
IF ERRORLEVEL == 8 GOTO STARTNOTE 
:CHKDSK 
CHKDSK C: 
PAUSE 
goto menu 
:RENEW 
IPCONFIG /RENEW 
PAUSE 
goto menu 
:DISPLAYIP 
IPCONFIG /ALL 
PAUSE 
goto menu 
:PINGGOOGLE 
PING HTTP://WWW.GOOGLE.CO.UK/ 
PAUSE 
goto menu 
:CLEANMGR 
CLEANMGR 
PAUSE 
goto menu 
:PING0 
PING 192.168.0.1 
PAUSE 
goto menu 
:PING1 
PING 192.168.1.1 
PAUSE 
goto menu 
:STARTNOTE 
START NOTEPAD 
PAUSE 
goto menu 

उत्तर

1

बदलें करने के लिए

IF %ERRORLEVEL%==1 GOTO CHKDSK 
IF %ERRORLEVEL%==2 GOTO RENEW 
IF %ERRORLEVEL%==3 GOTO DISPLAYIP 
IF %ERRORLEVEL%==4 GOTO PINGGOOGLE 
IF %ERRORLEVEL%==5 GOTO CLEANMGR 
IF %ERRORLEVEL%==6 GOTO PING0 
IF %ERRORLEVEL%==7 GOTO PING1 
IF %ERRORLEVEL%==8 GOTO STARTNOTE 
goto menu 

ध्यान दें कि यदि आदेश तुलना अंतरिक्ष इसलिए संवेदनशील होते हैं, "0" == "0" नहीं बराबर होगा ERRORLEVEL हिस्सा।

1

त्रुटि स्तर थोड़ा मजाकिया है। जब आप इसकी तुलना करते हैं, तो यह वास्तव में जांचता है कि संख्या कम या बराबर है या नहीं। तो इसे अपने वर्तमान तरीके से काम करने के लिए, आपको रिवर्स में परीक्षणों को ऑर्डर करने की आवश्यकता है।

if "%errorlevel%"=="4" goto :PINGGOOGLE 

यह आमतौर पर एक अच्छा विचार है सभी परीक्षणों के बाद goto :menu डाल करने के लिए, अगर आपका कोई भी में की परीक्षण पास है:

यह करने के लिए अन्य तरीके से वातावरण चर का उपयोग करें। उदाहरण के लिए, यदि उपयोगकर्ता Ctrl-C दबाता है, तो त्रुटि त्रुटि शून्य के रूप में सामने आती है। आपके कोड में (परीक्षणों को ठीक करने के बाद), यह :CHKDSK सेक्शन तक गिर जाएगा।

1

आप एक बहुत सरल दृष्टिकोण का उपयोग कर सकते हैं यदि आप बिल्कुल नहीं परीक्षण errorlevel मूल्य करते हैं, लेकिन सिर्फ यह का उपयोग अधिक गंतव्यों के साथ एक goto आदेश इकट्ठा करने के लिए। इस विधि को काम करने के लिए, लेबल बदलना चाहिए ताकि वे त्रुटिले मानों को शामिल कर सकें।

echo off 
:menu 
echo This is a simple cleanup and repair utility. Please select an option: 
echo 1 - Check the hard disk c:\ for errors and inconsistancies. 
echo 2 - Renew the IP address 
echo 3 - View IP Address information 
echo 4 - Check internet connection by pinging http://www.google.co.uk/ 
echo 5 - Start disk cleanup utility 
echo 6 - ping 192.168.0.1 
echo 7 - ping 192.168.1.1 
echo 8 - Open notepad 
choice /n /c:12345678 /M "Choose an option (1-8) " 
GOTO LABEL-%ERRORLEVEL% 

:LABEL-1 CHKDSK 
CHKDSK C: 
PAUSE 
goto menu 
:LABEL-2 RENEW 
IPCONFIG /RENEW 
PAUSE 
goto menu 
:LABEL-3 DISPLAYIP 
IPCONFIG /ALL 
PAUSE 
goto menu 
:LABEL-4 PINGGOOGLE 
PING HTTP://WWW.GOOGLE.CO.UK/ 
PAUSE 
goto menu 
:LABEL-5 CLEANMGR 
CLEANMGR 
PAUSE 
goto menu 
:LABEL-6 PING0 
PING 192.168.0.1 
PAUSE 
goto menu 
:LABEL-7 PING1 
PING 192.168.1.1 
PAUSE 
goto menu 
:LABEL-8 STARTNOTE 
START NOTEPAD 
PAUSE 
goto menu 
+0

निर्माण अच्छी तरह से है, लेकिन एक 'संलग्न: लेबल-0' एक' प्रणाली से बचने के लिए बैच लेबल निर्दिष्ट नहीं मिल सकता है - लेबल-0' यदि उपयोगकर्ता प्रेस 'Ctrl + BREAK' या' Ctrl + C' दो बार । हालांकि, +1! – JosefZ