コメント
rem [コメント]
rem ここがコメントになり、解釈や実行はされない
文字を出力する
echo [[on | off] | [メッセージ]]コマンドプロンプトが表示された時点で、"echo on"になっている。
普通、処理内容を表示しないので、標準的に1行目に"@echo off"を記述する。
"@"は、コマンドを画面表示させずに実行するためのバッチファイル制御記号。
バッチファイルの先頭に"echo off"を記述しても、実際に反映されるのは2行目以降になるため、"echo off"を実行した文字列だけが表示されてかっこ悪いから"@"をつける。
test.bat
@echo off echo Message // Messageが表示される echo. // 空白行が表示 echo] // 空白行が表示 echo on // echo文そのものも表示 echo Message // Messageが表示される
> test.bat Message // echo Message // echo. // echo] // echo on $echo Message // echo Message echo Message // echo Messageの結果
バッチファイルのコマンドライン引数
xxx.bat [引数]引数は%1~として順に取得できる。
test.bat
@echo off echo %1 echo %2 echo %3
> xxx.bat aaa bbb ccc aaa bbb ccc
環境変数の設定
set [環境変数名]=[値]
set SourceDrive = "D:" set TargetDrive = %1※定義した環境変数はコマンドプロンプト終了時に揮発する。
この他に、値を設定するだけではなく、演算や置換、変数中の文字列の取り出しなどもできる。
環境変数の参照
%[環境変数名]%
set SourceDrive = "D:" echo %SourceDrive% // "D:"が表示される
参考:既存の環境変数は以下の方法で確認できる(Windows 7)
- マイコンピュータ>右クック:プロパティ>システムの詳細設定>システムのプロパティ:詳細設定タブ>環境変数
- コントロールパネル>ユーザーアカウントと家族のための安全設定>ユーザーアカウント>環境変数の変更
条件分岐
if [not] exist ファイル名(コマンド1) [else コマンド2] if [not][/i] "文字列1" == "文字列2" (コマンド1) [else コマンド2] if [/i] "文字列1" 比較演算子 "文字列2" (コマンド1) [else コマンド2] if defined 変数 (コマンド1) [else コマンド2] if [not] errorlevel 番号 (コマンド1) [else コマンド2] if cmdextversion 番号 (コマンド1) [else コマンド2]上から順に、
- ファイルが存在するか
- 文字列同士の比較
- 高度な比較
- 環境変数が定義されているか
- errorlevelで他プログラムの終了コードを条件として分岐
- コマンドインタプリタのバージョンを条件として分岐
- exist
- ファイルが存在する場合に条件が真になる
- not
- 指定した判定条件を反転させる。
- /i
- 文字列を比較する場合に、大小文字を区別しない
- 比較演算子
-
- EQU
- 等しい
- NEQ
- 等しくない
- LSS
- より小さい
- LEQ
- 以下
- GTR
- より大きい
- GEQ
- 以上
set case=[n] goto CASE_%case% :CASE_1 処理 goto :CASE_END :CASE_2 処理 goto :CASE_END :CASE_END
繰り返し処理
まとめ切れてないので省略。とりあえず下記参照。
バッチファイルからバッチファイルを呼び出す
call [ドライブ名:][パス]ファイル名 [引数]callで呼び出すと、呼び出したbatファイルの処理終了後、制御が戻ってくる。
入力待ち
pause「続行するには何かキーを押してください…」と表示され処理が中断される。
続行するには任意のキー、処理を中止するには[CTRL]+[C]。
ユーザーによる入力
(2000/XP~)キー入力された文字列を環境変数として取り込むことができる。set /p [環境変数] = "[メッセージ]"
@echo off set /p Input = "入力してくれい" echo %Input%と入力された
これを利用して分岐処理などを行う。
@echo off echo DISK0にパーティションを作成します。既存のデータは消去されます。 set /p ANSWER="よろしいですか(y/n)" if "%ANSWER%"=="y" diskpart /s x:\makedisk.ans exit
Original Ref:
- 炎のコマンドプロンプト入門
http://www.geocities.co.jp/SiliconValley-SanJose/1227/index.html - コマンドプロンプトを使ってみよう!
http://ykr414.com/dos/index.html - バッチメモ(Hishidama's bat-file Memo)
http://www.ne.jp/asahi/hishidama/home/tech/windows/bat.html
0 件のコメント:
コメントを投稿