SET
cmd.exe 環境変数を表示、設定、または削除します。

SET [変数名=[文字列]]

変数名 環境変数名を指定します。
文字列 変数に割り当てる文字列を指定します。

現在の環境変数を表示するには、パラメータを指定せずに SET と入力してください。

コマンド拡張機能を有効にすると、SET は、次のように変更されます:

等号や値を指定せずに、変数名だけを指定して SET コマンドを実行すると、
SET コマンドに指定された名前に接頭辞が一致するすべての変数の値が
表示されます。たとえば、

SET P

と入力すると、文字 'P' で始まるすべての変数が表示されます。

変数名が現在の環境に見つからない場合は、SET コマンドは、ERRORLEVEL を
1 に設定します。

SET コマンドでは、変数の名前に等符号を使用することはできません。

SET コマンドには、2 つの新しいスイッチが追加されています:

SET /A 式
SET /P 変数=[プロンプト文字列]

/A スイッチは、等号の右側の文字列が、評価すべき数式であることを
指定します。式の評価はごく単純で、次の操作がサポートされます。
操作は、優先順位の高い順に示されています:

() - グループ化
* / % - 算術演算子
+ - - 算術演算子
<< >> - 論理シフト
& - ビット演算子 AND
^ - ビット演算子排他的 OR
| - ビット演算子 OR
= *= /= %= += -= - 代入
&= ^= |= <<= >>=
, - 式の区切り記号

論理演算子またはモジュール演算子を使う場合は、式文字列を引用符で
囲む必要があります。式内の数値以外の文字列は環境変数文字列として
処理され、使用される前に数値に変換されます。指定された環境変数名が
現在の環境で定義されていない場合は、値として 0 が使用されます。
これにより、いくつもの % 記号を入力して値を取得しないでも、環境
変数の値を算術演算に使うことができます。
コマンド スクリプト外でコマンド ラインから SET /A を実行すると、式の
最終的な値が表示されます。割り当て演算子を使うには、割り当て演算子
の左側に環境変数名が必要です。数値は 10 進数ですが、接頭辞として 0x
を付けると 16 進数、0 を付けると 8 進数になります。従って、0x12 は 18、
あるいは 022 と同じです。8 進表記を使う場合は、注意してください。08 や
09 は、8 と 9 が有効な 8 進数ではないため、有効な数値ではありません。

/P はユーザーによって入力された入力行を変数の値として設定できるようにします。
入力行を読み取る前に、指定されたプロンプト文字列を表示します。プロンプト文
字列は空でもかまいません。

環境変数の置換は、次のように拡張されます:

%PATH:文字列1=文字列2%

は、PATH 環境変数を展開し、その結果に含まれるすべての "文字列1" を
"文字列2" に置き換えます。"文字列2" に空の文字列を指定すると、展開
された出力からすべての "文字列1" を削除することができます。"文字列1"
をアスタリスクで始め、展開された出力の先頭から、文字列1 の残りの部分
が最初に現れるまでのすべてを一致させることもできます。

また、展開の副文字列を指定することもできます。

%PATH:~10,5%

は、PATH 環境変数を展開し、展開結果の 11 番目 (オフセット 10) の文字
から始まる 5 文字だけを使います。長さが指定されなかった場合は、変数の
値の残りの長さを既定値とします。オフセットまたは長さのどちらかが負の値
の場合、環境変数の値の長さに指定されたオフセットまたは長さを足してその
数を使います。

%PATH:~-10%

は、パス変数の最後の10 文字が展開されます。

%PATH:~0,-2%

は最後の 2 文字以外のすべてが展開されます。

最後に、遅延環境変数の展開が追加されました。このサポートは常に既定で
無効になっていますが、CMD.EXE の /V: のコマンド ライン スイッチを使
って有効または無効にできます。CMD /? を参照してください。

遅延環境変数の展開は、実行時ではなく、テキスト行を読み取るときに展開
されるという現在の制限を避けるために役立ちます。
次の例は即時変数展開の問題を説明しています。

set VAR=before
if "%VAR%" == "before" (
set VAR=after;
if "%VAR%" == "after" @echo If you see this, it worked
)

この例は、論理的には IF 文が別の IF 文の本体に含まれる複合文なので、
両方の IF 文の %VAR% が、最初の IF 文を読み取ったときに展開されます。
このため、メッセージは決して表示されません。複合分の中の IF では "before"
と "after" が比較され、決して等しくはなりません。同様に次の例も期待し
たようには動作しません。

set LIST=
for %i in (*) do set LIST=%LIST% %i
echo %LIST%

この例では、現在のディレクトリのファイルの一覧は作成されず、代わりに最後
に見つけられたファイルが LIST 変数に設定されます。これは %LIST% が FOR 文
が読み取られるとき、一度だけ展開され、そのときは LIST 変数は、空だからです。
つまり、実際に実行されている FOR ループは

for %i in (*) do set LIST= %i

で、LIST に最後にみつけられたファイルを設定し続けているだけです。

遅延環境変数の展開では、実行時に環境変数を展開するために異なった文字
(感嘆符)を使うことができます。遅延環境変数の展開が有効な場合、上記の
例は次のように書くと意図したように動作します。

set VAR=before
if "%VAR%" == "before" (
set VAR=after
if "!VAR!" == "after" @echo If you see this, it worked
)

set LIST=
for %i in (*) do set LIST=!LIST! %i
echo %LIST%

コマンド拡張機能が有効な場合、SET によって表示される変数の一覧には
現れないいくつかの動的な環境変数があります。これらの変数の値は、変数の
値が展開されるときに動的に計算されます。ユーザーがこれらの名前の変数を
明示的に定義する場合、その定義は下記の動的な定義を無効にします。

%CD% - 現在のディレクトリ文字列に展開します。

%DATE% - DATE コマンドと同じフォーマットで現在の日付に展開します。

%TIME% - TIME コマンドと同じフォーマットで現在の時刻に展開します。

%RANDOM% - 0 から 32767 の間の任意の 10 進数に展開します

%ERRORLEVEL% - 現在の ERRORLEVEL の値に展開します。

%CMDEXTVERSION% - 現在のコマンド プロセッサ拡張機能のバージョン番号に
展開します。

%CMDCMDLINE% - コマンド プロセッサを起動したオリジナル コマンドライン
に展開します。
SETVER.EXE
MS-DOS がプログラムへ返すバージョン番号を設定します.

現バージョンテーブル表示: SETVER [ドライブ:パス]
エントリ追加: SETVER [ドライブ:パス] ファイル名 n.nn
エントリ削除: SETVER [ドライブ:パス] ファイル名 /DELETE [/QUIET]

[ドライブ:パス] SETVER.EXE ファイルの位置を指定します.
ファイル名 プログラムのファイル名を指定します.
n.nn プログラムに返す MS-DOS バージョンを指定します.
/DELETE (/D) 指定プログラムのバージョンテーブルエントリを削除します.
/QUIET バージョンテーブルエントリを削除している間, 通常表示する
メッセージを表示しません.
SHIFT
バッチ ファイル中の置き換え可能なパラメータの位置を変更します。

SHIFT [/n]

コマンド拡張機能を有効にすると、SHIFT コマンドは、/n スイッチをサポート
するようになります。このスイッチを指定すると、コマンドはシフトを n 番
目の引数から開始します。n は、0 から 8 までの数です。たとえば、

SHIFT /2

は、%3 を %2に、%4 を %3 にシフトし、%0 と %1 はシフトしません。
START
指定されたプログラムまたはコマンドを実行するためにウィンドウを開きます。

START ["タイトル"] [/Dパス] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/B] [コマンド/プログラム]
[パラメータ]

"タイトル" ウィンドウのタイトル バーに表示するタイトル。
パス 開始するディレクトリ。
B 新しいウィンドウを作成せずにアプリケーションを起動します。
アプリケーションは Ctrl+C を無視します。
アプリケーションで Ctrl+C を有効にしていない限り、
Ctrl+Break がアプリケーションを中断する唯一の方法です。
/I 新しい環境は、現在の環境ではなく、cmd.exe に渡された元の環境に
なります。
/MIN ウィンドウを最小化の状態で起動します。
/MAX ウィンドウを最大表示の状態で起動します。
/SEPARATE 16 ビットの Windows プログラムを別メモリ領域で起動します。
/SHARED 16 ビットの Windows プログラムを共有メモリ空間で起動します。
/LOW IDLE 優先度クラスでアプリケーションを起動します。
/NORMAL NORMAL 優先度クラスでアプリケーションを起動します。
/HIGH HIGH 優先度クラスでアプリケーションを起動します。
/REALTIME REALTIME 優先度クラスでアプリケーションを起動します。
/ABOVENORMAL ABOVENORMAL 優先度クラスでアプリケーションを起動します。
/BELOWNORMAL BELOWNORMAL 優先度クラスでアプリケーションを起動します。
/WAIT アプリケーションを起動し、終了するまで待ちます。
コマンド/プログラム
内部コマンドまたはバッチ ファイルの場合、コマンド プロセッサは cmd.exe の /K オプションを使用して実行されます。これは、コマンドの実行の後でもウィンドウが残ることを意味します。内部コマンドまたはバッチ ファイルではない場合、そのプログラムはウィンドウ モードのアプリケーションまたはコンソール アプリケーションとして動作します。

パラメータ コマンド/プログラムに渡すパラメータです。


コマンド拡張機能を有効にすると、コマンド ラインまたは START コマンドによる外部コマンドの起動は、次のように変更されます:

非実行可能ファイルは、ファイル名をコマンドとして入力することによって、ファイルの関連付けを使って開くことができます (例: WORD.DOC は .DOC
ファイル拡張子に関連付けられているアプリケーションを起動します)。コマンド スクリプト内でファイルの関連付けを作成する方法については、
ASSOC と FTYPE コマンドを参照してください。

32 ビット GUI アプリケーションを実行する場合、CMD.EXE は、アプリケーションの終了を待たずにコマンド プロンプトに戻ります。コマンド スク
リプト内で実行する場合は、この動作は発生しません。

最初のトークンが拡張子やパス修飾子を持たない文字列 "CMD" であるコマンド ラインを実行する場合、"CMD" が COMSPEC 変数の値で置き換えられます。これにより現在のディレクトリの CMD.EXE が使われないようにします。

最初のトークンが拡張子を含まないコマンド ラインを実行する場合、CMD.EXE は、PATHEXT 環境変数の値を使って拡張子の種類と順序を判断します。

PATHEXT 変数の既定値は、次のとおりです:

.COM;.EXE;.BAT;.CMD

この構文は PATH 変数と同じであり、各要素はセミコロンで区切られていることに注意してください。

実行可能なファイルを検索するときにどの拡張子でも一致するファイルが見つからない場合は、拡張子なしの名前がディレクトリ名と一致するかどうかを調べます。一致する場合は、START コマンドがそのパスでエクスプローラを起動します。コマンド ラインから実行した場合は、そのパスに対する CD /D の実行と同じになります。
SUBST.EXE
パスをドライブ名に関連付けます。

SUBST [ドライブ1: [ドライブ2:]パス]
SUBST ドライブ1: /D

ドライブ1: パスを割り当てる仮想ドライブを指定します。
[ドライブ2:]パス 仮想ドライブに割り当てる物理ドライブとパスを指定します。
/D 置換した (仮想) ドライブを削除します。

現在の仮想ドライブ一覧を表示するときは、パラメータを指定せずに SUBST と入力してください。
TIME
システム時刻を表示または設定します。

TIME [/T | 時刻]

パラメータの指定がなければ、現在の設定が表示され、新しい時刻を入力できるプロンプトになります。変更しない場合は、Enter キーを押してください。

コマンド拡張機能を有効にすると、TIME コマンドは、/T スイッチをサポートするようになります。このスイッチを指定すると、現在の時刻だけが表示され、新しい時刻を入力するためのプロンプトは表示されません。
TITLE
コマンド プロンプト ウィンドウのウィンドウ タイトルを設定します。

TITLE [文字列]

文字列 コマンド プロンプト ウィンドウのタイトルを指定します。
TRACERT.EXE
ネットワーク経路の確認

TRACERT [-d] [-h 数値] [-j ホストリスト] [-w 数値] 相手先ホスト

-d : IPアドレスからホスト名の参照を行わない
-h : 中継数を指定した回数に制限する
-j : リストで指定した通りにルーティングする 中間のゲートウェイによって指定ルートが区切られる可能性がある
-w : タイムアウト時間をミリ秒単位で指定
TYPE
テキスト ファイルまたはファイルの内容を表示します。

TYPE [ドライブ:][パス]ファイル名
US.BAT
コードページをを英語に変更するバッチファイル

@echo off
rem Change the active CODE PAGE to 437 (United States)
CHCP 437
VER
Windows のバージョンを表示します。

VER
VERIFY
ファイルがディスクに正しく書き込まれたことを照合するかどうかを
cmd.exe に指示します。

VERIFY [ON | OFF]

現在の設定を表示するときは、パラメータを指定せずに VERIFY と入力してください。
VOL
ディスクのボリューム ラベルとシリアル番号を表示します。

VOL [ドライブ:]
XCOPY.EXE
ファイルとディレクトリ ツリーをコピーします。

XCOPY 送り側 [受け側] [/A | /M] [/D[:日付]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U]
[/K] [/N] [/Z]
[/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...]

送り側 コピーするファイル (複数可) を指定します。
受け側 新しいファイルの位置や名前を指定します。
/A アーカイブ属性のファイルのみをコピーし、属性は変更しません。
/M アーカイブ属性のファイルのみをコピーし、アーカイブ属性を解除。
/D:月-日-年 指定された日付以降に変更されたファイルをコピーします。
日付が指定されなかったときは、送り側の日付が受け側の日付より新しいファイルだけをコピーします。
/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...
文字列を含むファイルの一覧を指定します。文字列がコピーされるファイルの絶対パスの一部と一致した場合、そのファイルはコピーから除外されます。
/P 受け側のファイルを作成する前に確認のメッセージを表示します。
/S 空の場合を除いて、サブディレクトリをコピーします。
/E サブディレクトリが空であってもコピーします。
/S /E と同じ意味です。/T と同時に指定できます。
/V 書き込んだ各ファイルを検証します。
/W キー入力があるまでコピー開始を待ちます。
/C エラーが発生してもコピーを続けます。
/I 受け側がなく複数のファイルをコピーする場合、受け側をディレクトリとしてコピーします。
/Q コピー中ファイル名を表示しません。
/F コピー中送り側と受け側の全ファイル名を表示します。
/L コピーされるファイル名を表示します。
/H 隠しファイルやシステム ファイルもコピーします。
/R 読み取り専用ファイルを上書きします。
/T ファイルはコピーせずにディレクトリのみを作成します。ディレクトリまたはサブディレクトリが空の場合は除きます。/E と使用すればディレクトリやサブディレクトリが空でも作成されます。
/U 受け側に既に存在するファイルだけをコピーします。
/K 属性をコピーします。通常の XCOPY は読み取り専用属性を変更します。
/N 生成された短い名前を使用してコピーします。
/O ファイルの所有権と ACL 情報をコピーします。
/X ファイル監査設定をコピーします ( /O を含む)。
/Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示しません。
/-Y 受け側の既存のファイルを上書きする前に確認のメッセージを表示します。
/Z 再起動可能モードでネットワーク ファイルをコピーします。

環境変数 COPYCMD にスイッチ /Y を設定できます。
これは、コマンド ラインの /-Y で無効になります。