実況◆フジテレビ1 #671

671バッチファイルの基本的な書式と考え方◆KxZZ03oT7k:2025/06/21(土) 22:18:19.30 ID:as4M9JJk

https://qiita.com/go1101/items/a2df957120b709b94273


遅延環境変数の使用を宣言する
バッチファイルには環境変数の即時展開という特徴があり、環境変数が読み込まれた時点で値を確定してしまいます。
環境変数の即時展開を防ぐためには遅延環境変数を使用します。

setlocal enabledelayedexpansionを定義する
変数を%ではなく!で囲む
条件分岐(if文)や繰り返し(for文)などを使用する時によく使います。

カレントフォルダへ移動
cdコマンドで%~dp0を指定すると、対象のバッチファイルが保存されているフォルダへ移動します。

一時停止する
バッチファイル内にpauseを記載すると、実行中のバッチファイルの処理を一時停止できます。
pauseは主に作成中のバッチファイルの動作確認などのために使用します。

コメントアウトの記載
バッチファイル内にremを記載すると、コメントを追加できます。

バッチファイルには複数行をまとめてコメントアウトする方法が無いため、1行ずつコメントアウトする必要があります。

変数の取り扱い方
一般的な変数の取り扱い方をまとめました。

変数の宣言と展開
変数を定義するにはsetコマンドを使います。setコマンドのオプションには以下のようなものがあります。

オプション 意味
なし 変数に値を代入
/a 変数に計算結果を代入
/p 変数に入力値を代入
変数を展開するには、変数を%で囲みます。ただし、for文やif文などの中で遅延環境変数を展開する場合は%ではなく!で変数を囲みます。

variables.bat(変数の取り扱い)
set a=1
set b=2
set /a c=a*b
echo %c%

set /p d=数字を入力して下さい。:
echo 入力された数字は%d%です。
変数を宣言する場合、スペースを含めると設定値が正しく代入されません。

変数の値を参照
変数の値を参照するにはechoコマンドで変数を%で囲みます。
複数の変数を結合する場合も同様に%で囲むことで結合が可能です。
以下の例ではdateコマンドとtimeコマンドを数字の部分を抽出した結果を出力しています。

C:\>echo %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%
202110152345
具体的には以下のような情報を抽出し、結合しています。

dateコマンドの先頭から4文字を抽出
dateコマンドの6文字目から2文字を抽出
dateコマンドの8文字目から2文字を抽出
timeコマンドの先頭から2文字を抽出
timeコマンドの4文字目から2文字を抽出
※2021年10月15日23:45の実行結果です。

文字数の数え方は1からではなく0から開始します。

変数の切り出し(加工)
書式 意味
%a% 変数全体
%a:~m% 先頭m文字目から最後まで
%a:~m,n% 先頭m文字目からn文字分まで
%a:~m,-n% 先頭m文字目から後尾n文字分まで
%a:~-m,n% 後尾m文字目からn文字分まで
%a:aaa=bbb% 変数aの文字列aaaを文字列bbbに置き換え
特殊な変数
変数 意味
%cd% カレントフォルダのパス
%date% 現在日付
%time% 現在時刻
%random% ランダムな値
%errorlevel% 直前のコマンドのエラーレベル
ローカル変数の定義
ローカル変数を定義することで、変数の利用範囲を限定できます。

コマンド 意味
setlocal ローカル変数の使用を開始
endlocal ローカル変数の使用を終了
先述した遅延環境変数を定義する場合も、setlocalコマンドを使います。
バッチファイルの先頭に@echo off && setlocalと定義するこ


スパムを通報

このレスがスパム・荒らしである場合は以下のボタンをクリックして通報してください。
(同意できない意見などに反対票を投じる機能ではありません)
通報

このスレッドを全て表示


レスを書き込む