Windowsコマンド虎の巻

環境変数

環境変数についての基礎知識です。

定義済み環境変数

定義済み環境変数には以下のようなものがあります。

【定義済み環境変数】
環境変数説明値の例
%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