5

実行ボックスまたはコマンド プロンプトに必要なものを入力するだけなので、通常はバッチ ファイルを作成しませんが、Windows の基本的なユーティリティにアクセスして物事を確認できるようにするためだけにバッチ ファイルを作成しようとしています (実際には作成しません)。必要ありませんが、父は役に立つと思います)。私はPythonに精通しています(しかし新しい)ので、これらのことのためにPythonを使用する方が良いオプションであれば、それを行うことができますが、これと同じくらい簡単なことを行うにはバッチが最善の方法だと思いました. 問題は私のメニューにあります。私のメニューのせいで、選択したコマンドを実行する前にすべてのコマンドを循環していると思います。バッチ スクリプトは以下のコード ボックスにあります。

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
4

3 に答える 3

2

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
于 2013-10-02T03:28:41.323 に答える
1

ErrorLevel 部分を

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

if コマンドの比較ではスペースが区別されるため、"0 "==" 0" は等しくないことに注意してください。

于 2013-10-01T21:09:46.633 に答える
1

エラーレベルは少しおかしいです。そのように比較すると、実際には数値が以下かどうかがチェックされます。したがって、現在の方法で機能させるには、テストを逆に並べ替える必要があります。

もう 1 つの方法は、環境変数を使用することです。

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

goto :menuどのテストもパスしない場合に備えて、通常はすべてのテストの後に置くことをお勧めします。たとえば、ユーザーが を押すCtrl-Cと、エラーレベルはゼロになります。コードでは(テストを修正した後)、:CHKDSKセクションに落ちます。

于 2013-10-01T21:09:55.610 に答える