Windowsでコマンドの実行結果を変数に代入する方法について解説します。主にバッチファイルやコマンドプロンプトで使用するテクニックで、スクリプト作成や自動化に役立ちます。
1. for コマンドを使う方法
Windowsでは、for
コマンドを使ってコマンドの出力結果を変数に代入できます。
基本構文
for /f "オプション" %%変数 in ('コマンド') do (
コマンド
)
使用例:ipconfig の結果を変数に代入
@echo off
for /f "tokens=*" %%i in ('ipconfig ^| find "IPv4"') do set IP=%%i
echo あなたのIPアドレスは: %IP%
ポイント:
^|
はパイプ|
のエスケープです。%%i
はバッチファイル内で使用する変数です。コマンドプロンプト上で直接実行する場合は%i
とします。
2. コマンドプロンプトでの簡単な代入
コマンドプロンプト上で直接変数に代入する場合は次のようにします。
使用例:日時を取得
for /f "tokens=2 delims==" %i in ('wmic os get localdatetime /value') do set datetime=%i
echo 現在の日時: %datetime%
3. PowerShellを使用する方法
PowerShellを使用すると、より直感的にコマンドの出力を変数に代入できます。
使用例:PowerShellでIPアドレス取得
$ip = (Get-NetIPAddress | Where-Object {$_.AddressFamily -eq "IPv4"}).IPAddress
Write-Output "あなたのIPアドレスは: $ip"
ポイント: PowerShellはオブジェクト指向のため、出力を簡単にフィルタリングや操作できます。
4. コマンド出力をファイルに書き込んで読み込む方法
一度ファイルに書き出してから変数に読み込む方法もあります。
使用例:ファイルを経由した代入
@echo off
systeminfo > temp.txt
set /p result=<temp.txt
echo 結果の一部: %result%
del temp.txt
5. set コマンドを使った直接代入
単純な値を変数に設定するには set
コマンドを使います。
使用例:シンプルな代入
set VAR=Hello World
echo %VAR%
まとめ
- シンプルな代入:
set VAR=値
- コマンド出力の取得:
for /f
を使う - 高度な操作: PowerShellを利用する
- ファイルを経由:
>
とset /p
を組み合わせる
Windowsバッチやスクリプトでコマンド結果を柔軟に変数に代入することで、より高度な自動化や処理が可能になります。PowerShellを使うとさらに強力なスクリプトを作成できます。