2013-10-01 27 views
5

Genellikle toplu iş dosyaları oluşturmuyorum, çünkü yalnızca çalıştırma kutusuna veya komut istemine ihtiyacım olanı yazdım, ancak yalnızca pencerelerdeki temel yardımcı programlara erişip denetime izin vermek için bir tane yapmaya çalışıyorum. şeylere (gerçekten ihtiyacım yok ama sanırım babam bunu yararlı bulacaktır). Python'la tanıdık (ama yeni) yapıyorum, bu yüzden python kullanmanın daha iyi bir seçenek olması durumunda bunu yapabilirim, ancak toplu işin bu kadar basit bir şey yapmanın en iyi yolu olduğunu düşündüm. Sorun benim menümde. Menümden dolayı, seçilen komutu yapmadan önce tüm komutlardan geçiyor. Bununla ilgili herhangi bir yardım tam olarak takdir edilecektir, toplu betik aşağıdaki kod kutusundadır.Toplu İş Dosyalarındaki Menüler

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 

cevap

1

değiştir komutu karşılaştırmalar uzay nedenle duyarlı iseniz "0 "==" 0" eşit olmayacak

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 

Not ErrorLevel parçası.

1

Hata seviyesi biraz komik. Bu şekilde karşılaştırdığınızda, aslında sayının daha az mı yoksa eşit mi olduğunu kontrol eder. Bu yüzden şu anki işinizi yürütmek için, testleri tersine sıralamanız gerekir.

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

Genellikle testler geçmesi sadece vaka hiçbiri, tüm testlerden sonra goto :menu koymak iyi bir fikirdir:

bunu yapmak için başka bir yol ortam değişkeni kullanmaktır. Örneğin, kullanıcı Ctrl-C tuşlarına basarsa, hata seviyesi sıfır olarak çıkar. Kodunuzda (testleri düzelttikten sonra), :CHKDSK bölümüne düşer. Eğer hiç değil testi ErrorLevel değerini yaparsanız

1

Sen çok daha basit bir yaklaşım kullanabilir, ama sadece Birden fazla hedefli bir goto komutu birleştirmek için onu kullanın. Bu yöntemin çalışması için etiketler, hata seviyesi değerlerini içerecek şekilde değiştirilmelidir.

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

İşleri iyi ama eklemek bir ': ETİKET-0' toplu etiket belirtilen bulamıyor bir' sistemi önlemek için - ETİKET-0' eğer kullanıcı presler 'CTRL + BREAK' veya' CTRL + C' iki kez . Ancak, +1! – JosefZ

İlgili konular