環境変数
環境変数についての基礎知識です。
定義済み環境変数
定義済み環境変数には以下のようなものがあります。
環境変数 | 説明 | 値の例 |
---|---|---|
%COMPUTERNAME% | マシン名 | mypc |
%HOMEDRIVE% | ログインユーザのホームドライブ | C: |
%HOMEPATH% | ログインユーザのホームディレクトリ | \Users\hoge |
%OS% | OS名 | Windows_NT |
%PATH% | パス | C:\windows\system32;~ |
%ProgramData% | ProgramDataフォルダのパス | C:\ProgramData |
%ProgramFiles% | ProgramFilesフォルダのパス | C:\Program Files |
%SystemDrive% | システムドライブ | C: |
%SystemRoot% | システムルート | C:\Windows |
%WINDIR% | Windowsフォルダへのパス | C:\Windows |
%USERDOMAIN% | ログインドメイン | mydomain |
%USERNAME% | ログインユーザ名 | Administrator |
%TEMP% %TMP% | 一時フォルダのパス | C:\Users\hoge\AppData \Local\Temp |
%PATHEXT% | 実行ファイルの拡張子一覧 | .COM;.EXE;.BAT; .CMD;.VBS;.VBE; .JS;.JSE;.WSF; .WSH;.MSC |
%COMSPEC% | cmd.exeへのパス | C:\WINDOWS\ system32\cmd.exe |
パス(%Path%)は、pathコマンドでも表示できます。
ログインユーザ名を表示する(ユーザ名が taroの場合)
C:\>echo %USERNAME%
taro
値を表示するには、echoコマンドで表示できます。
定義済みの環境変数の一覧を表示する
C:\>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Administrator\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
・・・(以下省略)・・・
定義済みの環境変数の一覧は、setコマンドで表示できます。
特殊環境変数
実行時点で値が変わるような環境変数もあります。
環境変数 | 説明 | 値の例 |
---|---|---|
%CD% | カレントディレクトリを返す | C:\temp |
%DATE% | 現在日付を返す | 2018/07/01 |
%TIME% | 現在時刻を返す | 13:27:07.91 |
%RANDOM% | 0 ~ 32767 のランダムな数値を返す | 32767 |
%ERRORLEVEL% | ERRORLEVEL(終了コード)を返す | 1 |
%CMDEXTVERSION% | コマンドプロンプト拡張機能の バージョン番号を返す | 2 |
%CMDCMDLINE% | コマンドプロンプトのパスを返す | "C:\Windows\ System32\cmd.exe" |
%HIGHESTNUM ANODENUMBER% | 最大のNUMAノード番号を返す | 0 |
%PROMPT% | プロンプトの設定 ※ promptコマンドで設定できます。 | $P$G |
変数値の一部分を取得する
変数値の一部分を取得するサンプルです。
変数をそのまま出力
set x=ABCDEFGHIJ
echo %x%
⇒ABCDEFGHIJ
以下サンプルは、この変数「x」を使用します。
先頭から4文字取得する
echo %x:~0,4%
⇒ABCD
先頭から4文字目以降を取得する
echo %x:~4%
⇒EFGHIJ
先頭から4文字目~2文字を取得する
echo %x:~4,2%
⇒EF
先頭から末尾の2文字前まで取得する
echo %x:~0,-2%
⇒ABCDEFGH
"E"を"X"に置換する
echo %x:E=X%
⇒ABCDXFGHIJ
日時フォーマット
日付や時刻をフォーマット指定で表示するサンプルです。
現在日付をYYYYMMDD形式で表示する
set now1=%date:~-10,4%%date:~-5,2%%date:~-2,2%
echo %now1%
⇒(例)20180707
以下でもOKです。
echo %date:/=%
⇒(例)20180707
現在日付をYYYY-MM-DD形式で表示する
set now2=%date:~-10,4%-%date:~-5,2%-%date:~-2,2%
echo %now2%
⇒(例)2018-07-07
以下でもOKです。
echo %date:/=-%
⇒(例)2018-07-07
現在時刻をHHMMSS形式で表示する
set time1=%time:~0,2%%time:~3,2%%time:~6,2%
echo %time1%
⇒(例)215804
現在時刻をHH:MM:SS形式で表示する
set time2=%time:~0,2%:%time:~3,2%:%time:~6,2%
echo %time2%
⇒(例)21:58:04
以下でもOKです。
echo %time:~0,8%
⇒(例)21:58:04