環境変数
環境変数についての基礎知識です。
定義済み環境変数
定義済み環境変数には以下のようなものがあります。
環境変数 | 説明 | 値の例 |
---|---|---|
%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 |
%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