batファイルtips
今回のまとめでは次のとおりのtipsをご紹介します。・条件分岐 if~else の 秘密
・条件分岐 IF文 AND条件
・入力を受け付ける方法
・FOR 文の書き方2つ
・改行せずに出力する方法
・変数 の扱い方
・複数行をコメントアウトする方法
・sleep させる方法
・条件分岐 if~else の 秘密
「batファイル」の「if~else」には秘密があります。
括弧"("または")"の両側には必ずスペースが必要だということです。
if "ABC" EQU "ABD" (
echo "この文字列は同じ"
) else if "ABC" NEQ "ABD" (
echo この文字列は異なる
)
両側にスペースがないと、「構文が間違っています」だとかなんだか言われます。
スペースを入れてくださいとかならすぐわかるのに、ぶっきらぼうな指摘をしますね。
・条件分岐 IF文 AND条件
「batファイル」の 「AND条件でIF文」を作りたいときに、他の多くのプログラミングとは少々異なる書き方をします。
IF %A% == 1 IF %B% == 2 (
echo "A is 1 B is 2 "
) else (
echo "not A is 1 B is 2 "
)
このとき要注意するのは、「else」内の処理に入る条件でです。if条件のうちのどちらかが「false」もしくは両方が「false」になったときにだけ「else」内の処理に入ります。詳しくは実験して試した方が理解しやすいかもしれません。この記事のソースコードを使用して確かめてみてください。
・入力を受け付ける方法
batファイルで入力を受け付ける場合、以下のように記載します。
以下のように書くと、yと入力したら処理を実行。y以外を入力したら終了する処理となります。
ECHO 処理を実行しますか? (Y/N)
SET /p c=
if "%c%"=="Y" GOTO CONTINUE
ECHO "Yじゃないの入力したので終了"
EXIT
:CONTINUE
ECHO Yを入力したので処理を実行します
・FOR 文の書き方2つ
batファイルのFOR 文の書き方を2つご紹介します。次のどちらのソースコードも意味は一緒です。意味としては次のとおりです。
意味:
ConnectList.txtを","区切りでを第3引数まで一行ずつ最後まで読み込んで処理するという意味です。
FOR /F "tokens=1,2,3 delims=," %%a IN (ConnectList.txt) call test
:test
処理1
処理2
処理3
もしくは
FOR /F "tokens=1,2,3 delims=," %%a IN (ConnectList.txt) Do (
処理1
処理2
処理3
)
なお取得した引数はFOR文内では、次のように使うことが出来ます。上記でも使用していますね。
第一引数=%%a、第二引数=%%b、第三引数=%%c
・改行せずに出力する方法
batファイルで改行せずに出力するには以下のように記載します。これで、testと改行されずにコマンドプロンプトに表示されます。
set /p x=test
・変数 の扱い方
batファイルでも変数を扱うことが出来ます。変数は、%変数% または !変数! として使用します。
setlocal ENABLEDELAYEDEXPANSION を宣言すると、%変数%と表現するところを !変数! と表現するようになります。
%変数% と !変数! は微妙に動作が異なるようです。動作は次のとおり。
%変数% :
その行が実行される前に、変数の内容に展開されてから実行される。
!変数! :
その行の!変数!部分が実行される時に、変数の内容に展開される。
詳細は、set /? でヘルプを表示して、確認しましょう。
・複数行をコメントアウトする方法
batファイルで複数行をコメントアウトするには次のとおりにします。
if 1 == 0 (
処理1
処理2
処理3
処理4
)
とすると、処理*をコメントアウトした時と同様になります。
・sleep させる方法
batファイルでsleepはありません。しかっし似たようなことなら出来ます。これは私がサラリーマン時代に教えてもらった方法です。これで、何も表示せずにping送信4回分の時間待ちます。
ping localhost -n 4 > nul
以上。「batファイルtips ~まとめ~」でした。
0 件のコメント:
コメントを投稿