LoginSignup
1
1

batの構文

Last updated at Posted at 2024-06-12

はじめに

最近batを作ったので、自分用にbatの構文をまとめておきます。
随時更新するかも?

基本的なbatの構文

1. set 変数

1)set [<variable>=[<string>]]
2)set [/p] <variable>=[<promptString>]
3)set /a <variable>=<expression>

パラメーター 説明
<variable> 環境変数の指定
<string>  指定された環境変数に関連付ける文字列
/p <variable> の値をユーザーが入力した入力行に設定
<promptstring> 入力をユーザーに入力を求めるメッセージを指定。このパラメーターは、/p パラメーターと共に使用の必要あり。
/a <string> を評価される数値式に設定します。
<expression>  数値式の指定
/? コマンドプロンプトにヘルプの表示
1) set [<variable>=[<string>]]
例1
set x=3
set y=%x%+5
echo %y%
3+5

文字列の連結になってます。

例2
hoge.bat <引数入力>

set /a count=%1
echo 作成数:%count%

cmdでbatの後に数値を入力すると、上記の変数countに追加される。

2) set [/p] \<variable>=[\<promptString>]
set /p again=繰り返しますか?(y/n)if /i "%again%"=="y" (
echo.
goto loop
) else if /i "%again%"=="n" (
echo.
echo バッチを終了します。
) else ( echo yまたはnを入力してください。
goto loop

上記は、繰り返しをy/nの入力で制御しています。
y = loop、n = bat終了
実は、自分で作成したbatの抜粋です。
loopの定義はここには記載していないので、お好みの処理で使用してください。

3)set /a \<variable>=\<expression>
set x=3
set /a y=%x%+5
8
echo %y%
8

/aを外すと、文字列の連結になります。
1)の内容ですね。

2. for 構文

・for /L %%変数名 in (初期値,増値,終了値) do コマンド名

for /l %%i in (1,1,%count%) do (
 type NUL > %folder%\nul_testfile_%%i.txt
)

初期値を1として、1ずつ増加させていき、%count%まで、nul_testfile_<変数>.txtを作成する
※数値は整数の必要あり(負の値も使用可)

3. loop 構文

・:loop ~ goto loop

:loop
echo 使用する番号を選択してください。
set /p x="1.hoge1 2.hoge2 3.hoge3 :"

if "%x%" == "1"(
 echo 1.hoge1 が選択されました。
) else if "%x%" == "2"(
 echo 2.hoge2 が選択されました。
) else if "%x%" == "3"(
 echo 3.hoge3 が選択されました。
) else (
 echo 有効な値を入力してください。
goto loop
)

echo.
set /p again=繰り返しますか?(y / n)if /i "%again%"=="y" (
echo.
goto loop
) else if /i "%again%"=="n" (
echo.
echo バッチを終了します。
) else ( echo yまたはnを入力してください。
goto loop
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1