環境変数とPATHの永続設定

にメンテナンス済み

コマンドプロンプトで set MY_VAR=Hello と設定した変数が、ウィンドウを閉じたら消えてしまった──という経験はありませんか?

set コマンドで設定した変数は現在のセッションのみ有効であり、ウィンドウを閉じると消えてしまいます。再起動後も値を保持したい場合は setx コマンドを使います。この 2 つの違いを正しく理解することが、環境変数を使いこなす第一歩です。

環境変数とは

環境変数は、オペレーティングシステムやアプリケーションが参照する設定値をキーと値のペアで保持する仕組みです。

現在の環境変数をすべて表示するには次のコマンドを実行します。

set
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>set
APPDATA=C:\Users\user\AppData\Roaming
COMPUTERNAME=DESKTOP-XXXX
PATH=C:\Windows\system32;C:\Windows;…
TEMP=C:\Users\user\AppData\Local\Temp
USERNAME=user
USERPROFILE=C:\Users\user
C:\users\user>

特定の変数を確認するには echo を使います。

echo %PATH%
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>echo %PATH%
C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem
C:\users\user>
おすすめ書籍※ 広告を含む場合があります
中小企業経営者のためのRPA入門 RPA導入を成功させる方法

中小企業経営者のためのRPA入門 RPA導入を成功させる方法

60分でわかる! AIエージェント 超入門

60分でわかる! AIエージェント 超入門

コマンドラインの黒い画面が怖いんです。

コマンドラインの黒い画面が怖いんです。

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

知識・才能ゼロでもらく~に月10万円稼ぐ! よくわかるAI副業超入門

よく使うシステム環境変数

変数名説明例
%PATH%実行ファイルの検索パスC:\Windows\System32;...
%TEMP% / %TMP%一時ファイルの保存場所C:\Users\user\AppData\Local\Temp
%USERNAME%現在のユーザー名user
%COMPUTERNAME%コンピューター名DESKTOP-XXXX
%USERPROFILE%ユーザーフォルダのパスC:\Users\user
%APPDATA%アプリデータフォルダC:\Users\user\AppData\Roaming
%WINDIR%Windows フォルダC:\Windows
%SYSTEMROOT%Windows システムフォルダC:\Windows

set コマンド(セッション限定)

set コマンドは現在のコマンドプロンプトセッション内でのみ有効な変数を作成・変更します。

set 変数名=値
set MY_APP_HOME=C:\Apps\MyApp
echo %MY_APP_HOME%
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>set MY_APP_HOME=C:\Apps\MyApp
C:\Users\user>
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>echo %MY_APP_HOME%
C:\Apps\MyApp
C:\users\user>

変数を削除するには値を空にします。

set MY_APP_HOME=

数値計算には set /a を使います。

set /a RESULT=10 + 5
echo %RESULT%
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>set /a RESULT=10 + 5
15
C:\users\user>
セッション限定である点に注意

set で設定した変数は、コマンドプロンプトウィンドウを閉じると消えます。バッチファイル内で set を使った場合も、そのバッチファイルの実行が終わると変数は消えます(setlocal を使っている場合は endlocal 時点で消えます)。

setx コマンド(永続的な設定)

setx コマンドは Windows レジストリに値を書き込むため、ターミナルを閉じても、PC を再起動しても値が保持されます。

setx 変数名 "値"
setx の構文は set と異なる

set は 変数名=値(= が必要)ですが、setx は 変数名 "値"(= は不要、スペース区切り)です。この違いは間違えやすいので注意してください。

ユーザー環境変数として設定する(デフォルト)

setx MY_APP_HOME "C:\Apps\MyApp"
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>setx MY_APP_HOME "C:\Apps\MyApp"
成功: 指定した値は保存されました。
C:\users\user>

システム環境変数として設定する(/M オプション)

/M オプションを付けると、すべてのユーザーに影響するシステム環境変数として設定されます。

setx MY_APP_HOME "C:\Apps\MyApp" /M
- □ ×
コマンド プロンプトのアイコン
管理者: 管理者: コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>setx MY_APP_HOME "C:\Apps\MyApp" /M
成功: 指定した値は保存されました。
C:\users\user>
/M オプションには管理者権限が必要

setx に /M オプションを付けてシステム環境変数を設定するには、管理者として実行する必要があります。権限がない場合はエラーになります。

setx は現在のセッションに反映されない

重要な注意点として、setx で設定した変数は現在のコマンドプロンプトウィンドウには反映されません。新しくウィンドウを開いた後から有効になります。

setx NEW_VAR "Hello"
echo %NEW_VAR%
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>setx NEW_VAR "Hello"
成功: 指定した値は保存されました。
C:\users\user>
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>echo %NEW_VAR%
%NEW_VAR%
C:\users\user>

%NEW_VAR% がそのまま表示されるのは、変数が現在のセッションには設定されていないためです。新しいウィンドウを開くと正しく Hello と表示されます。

set と setx の比較

項目setsetx
有効範囲現在のセッションのみ永続(再起動後も有効)
構文set VAR=値setx VAR "値"
現在セッションへの反映即時反映されない(新しいウィンドウで有効)
システム全体への設定不可/M オプションで可能
管理者権限不要ユーザー変数は不要、システム変数は必要
バッチファイル内での一時利用適切不向き(実行のたびに書き込みが発生)

PATH への追加

PATH は実行ファイルを検索するディレクトリを列挙する特別な環境変数です。

一時的に PATH へ追加する(セッション限定)

set PATH=%PATH%;C:\MyTools
- □ ×
コマンド プロンプトのアイコン
コマンド プロンプト
Microsoft Windows [Version xx.x.xxxxx.xxx]
(c) 2026 Ribbit App Development All rights reserved.
 
C:\users\user>set PATH=%PATH%;C:\MyTools
C:\Users\user>

永続的に PATH へ追加する(setx)

setx PATH "%PATH%;C:\MyTools"
setx による PATH 設定は 1024 文字制限に注意

setx コマンドは設定できる値の長さが 1024 文字までに制限されています。現在の %PATH% が長い場合、setx PATH "%PATH%;新しいパス" を実行すると PATH が 1024 文字で切り捨てられ、既存のパスが失われる危険があります。PATH を変更する前に echo %PATH% で長さを確認してください。

PATH を安全に追加する方法(PowerShell 経由)

PATH が長い場合や安全に追加したい場合は、PowerShell を使う方法が確実です。

rem ユーザー PATH に追加(1024 文字制限を回避)
powershell -Command "[System.Environment]::SetEnvironmentVariable('PATH', $env:PATH + ';C:\MyTools', 'User')"
rem システム PATH に追加(管理者権限が必要)
powershell -Command "[System.Environment]::SetEnvironmentVariable('PATH', [System.Environment]::GetEnvironmentVariable('PATH','Machine') + ';C:\MyTools', 'Machine')"
GUI での PATH 管理が最も安全

PATH を頻繁に変更する場合は、GUI(システムのプロパティ)を使う方法が最も安全です。Win + R を押して sysdm.cpl と入力すると「システムのプロパティ」が開き、「環境変数」ボタンから PATH を安全に編集できます。

バッチファイルでの実践例

インストールスクリプトで set と setx を使い分ける例です。

@echo off
setlocal

rem インストール先(バッチファイル内での一時的な参照に set を使用)
set INSTALL_DIR=C:\MyApp

echo インストールを開始します...

rem ... インストール処理 ...
mkdir "%INSTALL_DIR%\bin" 2>nul
copy "myapp.exe" "%INSTALL_DIR%\bin\" >nul

rem 現在のセッションでもすぐに使えるよう PATH に追加
set PATH=%PATH%;%INSTALL_DIR%\bin

rem 次回ログイン以降も有効になるよう永続設定
setx MY_APP_HOME "%INSTALL_DIR%"
setx MY_APP_VERSION "1.0.0"

echo.
echo セットアップが完了しました。
echo 環境変数を次回のウィンドウから反映するには、新しいコマンドプロンプトを開いてください。

endlocal
set と setx を組み合わせる理由

インストールスクリプトでは、インストール直後にコマンドをすぐ実行したい場合があります。setx は現在のセッションに反映されないため、set で一時的に PATH へ追加しつつ、setx で次回以降のセッション用に永続設定するのが実用的なパターンです。

GUI で環境変数を確認・編集する

コマンドラインに慣れていない場合や、PATH の安全な編集には GUI が便利です。

Win + R を押して sysdm.cpl と入力すると「システムのプロパティ」が開きます。「詳細設定」タブの「環境変数」ボタンから、ユーザー変数とシステム変数をそれぞれ確認・編集できます。

まとめ

操作コマンド
一時的な変数設定set 変数名=値
永続的な変数設定(ユーザー)setx 変数名 "値"
永続的な変数設定(システム)setx 変数名 "値" /M(管理者権限が必要)
PATH を一時追加set PATH=%PATH%;追加するパス
変数の確認echo %変数名%
全変数の表示set
GUI での編集sysdm.cpl を起動

関連記事

練習問題

練習問題

setx コマンドで環境変数を設定した場合、その変数はいつ現在のコマンドプロンプトセッションで使用できますか?

回答がサーバーに送信されることはありません
#コマンドプロンプト #バッチファイル #環境変数 #set #setx #PATH