【Windowsバッチファイル(.bat)】コマンドの実行結果を変数に格納する


この記事はプロモーションを含みます。

Windows

ホーム > コマンドプロンプト・バッチファイル リファレンス

Windowsのバッチで、コマンドの実行結果を変数に格納する方法を解説します。

書式

コマンドの実行結果を変数に格納する際の書式です。
実行したコマンドの結果は、結果格納変数で指定した変数に格納されます。

for /f "usebackq" %%i in (`実行コマンド`) do set 結果格納変数=%%i

実行例

現在の日付を取得し、変数「result」に格納するサンプルコードです。

@echo off

for /f "usebackq" %%i in (`echo %date%`) do set result=%%i
echo 【結果確認】%result%

サンプルの実行結果です。
日付が変数「result」に格納されていることが分かります。

E:\Work>test.bat
【結果確認】2024/03/24

実行結果に半角スペースを含む場合

コマンドの実行結果に半角スペースを含む場合は少し工夫が必要です。

まずは以下のサンプルを普通に実行してみます。

@echo off

set str=AAA BBB CCC
for /f "usebackq" %%i in (`echo %str%`) do set result=%%i
echo 【結果確認】%result%

変数「str」には「AAA BBB CCC」が設定されていますが、
実行結果では「AAA」までしか出力されていません。

E:\Work>test.bat
【結果確認】AAA

このように実行結果に半角スペースを含む場合は、以下のように実装する必要があります。
具体的には、for文のオプションに「tokens=*」を追加します。

@echo off

set str=AAA BBB CCC
for /f "usebackq tokens=*" %%i in (`echo %str%`) do set result=%%i
echo 【結果確認】%result%

上記の実行結果です。半角スペース以降の文字列も取得されるようになりました。

E:\Work>test.bat
【結果確認】AAA BBB CCC

コマンドの実行結果が複数行の場合

複数行のコマンドの実行結果を変数に格納する方法です。

コメント

タイトルとURLをコピーしました