batファイルtips ~まとめ~

みなさんお仕事でbatファイルは使っていますでしょうか。windowsを使っている方しか使用できませんが、非常に便利なので今回の記事でご紹介いたします。

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 件のコメント:

コメントを投稿

上司がクソ野郎になってきた

上司がクソだ。 全然勉強していなくて話が通じなくてクソ REST知らないってどういうことなんだろう。弊社標準になってから久しいJavaをまともに組めないってのはどういうことなんだろう。 計画上では詳細設計フェーズが半分を過ぎようというときに要件定義できていないってのはどう...