BATスクリプト作成チュートリアル入門向上編

6142 ワード

BATスクリプト作成チュートリアル入門向上編
バッチ・ファイルのパラメータ
バッチ・ファイルは、DOSコマンドのコマンド・ライン・パラメータに相当するC言語の関数のようにパラメータを使用することもできます.これには、パラメータ表現「%」が必要です.
%[1-9]はパラメータを表し、パラメータはバッチファイルの実行時にファイル名の後にスペース(またはTab)で区切られた文字列を指す.変数は%0から%9、%0はバッチコマンド自体を表し、他のパラメータ文字列は%1から%9の順に表します.
例:
ShowTwoFilesContent.bat
@ECHO OFF
TITLE BAT  
COLOR A
echo -----------      -----------
echo= 
TYPE %1
echo= 
TYPE %2
echo=
echo -----------------------------------
PAUSE

別のBATファイルで呼び出す
@ECHO OFF
TITLE BAT  
COLOR A
echo -----------BAT  -----------
echo= 
CALL ShowTwoFilesContent.bat 1.txt 2.txt
echo=
echo -----------------------------------
PAUSE

if goto choice forコマンド
1、if[not]「パラメータ」=「文字列」実行するコマンド
パラメータが(notは等しくない、以下同じ)指定した文字列に等しい場合、条件は成立し、コマンドを実行し、そうでない場合は次の文を実行します.
例:if"%1"="a"format a:
2、if[not]exist[パス]ファイル名実行するコマンド指定したファイルがあれば条件が成立し、コマンドを実行し、そうでなければ次の文を実行する.
例:if exist c:config.sys type c:\config.Sysはc:configが存在する場合を示す.Sysファイルで、その内容が表示されます.
3、if errorlevel実行するコマンド
多くのDOSプログラムは、実行終了後にプログラムの実行結果(またはステータス)を表す数値値を返し、if errorlevelコマンドでプログラムの戻り値を判断し、異なる戻り値に基づいて異なるコマンドを実行することを決定します(戻り値は大きい順から小さい順に並べなければなりません).戻り値が指定した数値に等しい場合は、条件が成立し、コマンドが実行されます.そうでない場合は、次の文が実行されます.
例えばif errorlevel 2 goto x 2
例:
test.bat
@ECHO OFF
TITLE BAT  
COLOR A
echo -----------if goto choice for   -----------
echo= 
if "%1"=="1" goto x1

:x1
echo   1  ...
echo=
echo -----------------------------------
exit /b 0

別のbatファイルで呼び出す
@ECHO OFF
TITLE BAT  
COLOR A
echo -----------BAT  -----------
echo= 
CALL test.bat 1
if %errorlevel%==0 goto x2

:x2
echo     x2...

echo=
echo -----------------------------------
PAUSE

choiceは、このコマンドを使用して、ユーザーに文字(選択用)を入力させ、ユーザーの選択に応じて異なるerrorlevelを返し、if errorlevelで協力して、ユーザーの選択に応じて異なるコマンドを実行します.
注意:choiceコマンドはDOSまたはWindowsシステムに提供される外部コマンドで、異なるバージョンのchoiceコマンドの構文が少し異なりますので、choice/?使用方法を表示します.
choiceのコマンド構文(Windows 2003のchoiceコマンドの構文であり、他のバージョンのchoiceのコマンド構文はこれと大きく異なる):
CHOICE [/C choices] [/N] [/CS] [/T timeout/D choice] [/M text]
注意:ERRORLEVEL環境変数は、選択セットから選択されたキーインデックスに設定されます.リストされた最初の選択は1を返し、2番目の選択は2を返します.ユーザーが押したキーが有効な選択でない場合、ツールは警告音を発します.ツールがエラー状態を検出すると、255のERRORLEVEL値が返されます.ユーザーがCtrl+BreakまたはCtrl+Cキーを押すと、ツールは0のERRORLEVEL値を返します.1つのバッチでERRORLEVELパラメータを使用する場合は、パラメータを降順に並べ替えます.
例:CHOICE/?CHOICE/C YNC/M「Yを押してください.Nを押してください.キャンセルしてください.Cを押してください.」CHOICE/T 10/C ync/CS/D y CHOICE/C ab/M「オプション1 a、オプション2 bを選択してください.」CHOICE/C ab/N/M「オプション1はa、オプション2はbを選択してください」
私がコマンドを実行した場合:CHOICE/C YNC/M「Yを押してください.いいえNを押してください.キャンセルしてCを押してください.」Yを押してください、Nを押してください、またはCを押してください.[Y,N,C]?
例:
@ECHO OFF
TITLE CHOICE
COLOR A
echo -----------CHOICE-----------
echo= 
CHOICE /C ab /M "   1     a,   2     b。"
if %errorlevel%==2 goto B 
if %errorlevel%==1 goto A

:A
echo     A...
goto end
:B
echo     B...
goto end

:end
echo=
echo -----------------------------------
PAUSE

バッチの例
1. IF-EXIST
1)
まずメモ帳でC:でtest 1を作成します.batバッチファイル、@echo off IF EXISTAUTOEXEC.BAT TYPE\AUTOEXEC.BAT IF NOT EXIST\AUTOEXEC.BAT ECHO\AUTOEXEC.BAT does not exist
次に実行:C:>TEST 1.BAT
C:AUTOEXECが存在する場合.BATファイルは、その内容が表示され、存在しない場合、バッチはファイルが存在しないことを示します.
2)
次にtest 2を作成する.@ECHO OFF IF EXIST%1 TYPE%1 IF NOT EXIST%1 ECHO%1 does not exist
実行:C:>TEST 2 AUTOEXEC.BATこのコマンドの実行結果は同じです.
説明:(1)IF EXISTはファイルが存在するかをテストするためのものであり、形式はIF EXIST[パス+ファイル名]コマンド(2)test 2である.batファイルの%1はパラメータで、DOSは9つのバッチパラメータ情報をバッチファイルに渡すことを許可し、それぞれ%1~%9(%0はtest 2コマンド自体を表す)であり、これはプログラミング中の実パラメータと形パラメータの関係に似ている.%1は形パラメータ、AUTOEXECである.BATは実参です.
3)さらに、TEST 3という名前を確立する.@echo off IF"%1"="A"ECHO XIAO IF"%2"="B"ECHO TIAN IF"%3"="C"ECHO XIN
実行中:C:>TEST 3 A B C画面にXIAO TIAN XINと表示されます.
実行中:C:>TEST 3 A B画面にXIAO TIANが表示されます
このコマンドの実行中、DOSはパラメータ%3に空の文字列を指定します.
2、IF-ERRORLEVEL
TEST 4を確立する.BAT、内容は以下の通り:@ECHO OFF XCOPY C:AUTOEXEC.BAT D:IF ERRORLEVEL 1 ECHOファイルコピー失敗IF ERRORLEVEL 0 ECHOファイルコピー成功
次にファイルを実行します:C:>TEST 4
ファイルのコピーに成功すると、画面に「ファイルのコピーに成功しました」と表示されます.そうしないと、「ファイルのコピーに失敗しました」と表示されます.
IF ERRORLEVELは、その前のDOSコマンドの戻り値をテストするために使用され、前のコマンドの戻り値のみであることに注意し、戻り値は大きい順から小さい順に判断しなければならない.従って以下のバッチファイルはエラー:@ECHO OFF XCOPY C:AUTOEXEC.BAT D:IF ERRORLEVEL 0 ECHO成功コピーファイルIF ERRORLEVEL 1 ECHOコピーファイルIF ERRORLEVEL 2 ECHOユーザーctrl-cによるコピー操作中止IF ERRORLEVEL 3 ECHOプリセットエラーファイルコピー操作IF ERRORLEVEL 4 ECHOコピー中ディスクエラー
コピーが成功するかどうかにかかわらず、次のようになります.
コピーファイルが見つかりませんctrl-cによるコピー操作の中止プリセットエラーファイルコピー操作のコピー中にディスクエラーが書き込まれるのを阻止
表示されます.
以下に、backup 0バックアップ成功1バックアップファイルが見つかりません2ファイル共有競合バックアップ完了3ユーザー用ctrl-cバックアップ中止4致命的なエラーによりバックアップ操作を中止
diskcomp 0盤比較同じ1盤比較異なる2ユーザがctrl-cで比較操作を中止する3致命的なエラーで比較操作を中止する4プリセットエラーで比較を中止する
diskcopy 0ディスクコピー操作成功1非致命ディスク読み取り/書き込みエラー2ユーザctrl-cでコピー操作終了3致命的な処理エラーでディスクコピーを中止4プリセットエラーでコピー操作を阻止
format 0フォーマット成功3ユーザーctrl-cでフォーマット処理を中止4致命的な処理エラーでフォーマットを中止5ヒント「proceed with format(y/n)?」下ユーザー入力n終了
xcopy 0成功コピーファイル1コピーファイルが見つかりません2ユーザーはctrl-cでコピー操作を中止します4プリセットエラーファイルコピー操作を阻止します5コピー中にディスクエラーを書き込みます
3、IF STRING1 == STRING2
TEST 5を確立する.BAT,@echo off IF"%1"="A"formAT A:
実行:C:>TEST 5 A画面にA:ディスクをフォーマットするかどうかが表示されます.
注意:パラメータが空にならないように、文字列は二重引用符(または他の記号、保存記号は使用できないことに注意)で囲まれます.例えば、if[%1]=[A]またはif%1*==A*
5、GOTO
TEST 6を作成する.BAT,ファイル内容は以下の通り:@ECHO OFF IF EXIST C:AUTOEXEC.BAT GOTO _COPY GOTO _DONE :_COPY COPY C:\AUTOEXEC.BAT D:\ :_DONE
注意:(1)符号の前にはASCII文字のコロン":"があり、コロンと符号の間にスペースはありません.(2)ラベルの命名規則はファイル名の命名規則と同じである.(3)DOSは最長8文字の符号をサポートしており、2つの符号を区別できない場合は最寄りの符号にジャンプする.
6、FOR
C:TEST 7を作成する.BAT,ファイル内容は以下の通り:@ECHO OFF FOR%C IN(*.BAT*.TXT*.SYS)DO TYPE%C
運転:C:>TEST 7
実行後、画面には、BAT、TXT、SYSを拡張子とするすべてのC:ディスクルートディレクトリのファイル内容が表示されます(非表示ファイルは含まれません).
参考サイト:http://www.jb51.net/article/49627.htm