cmd.exeコマンド インタープリターの新しいインスタンスを開始します。 パラメーターを指定せずに使用すると、 cmd オペレーティング システムのバージョンと著作権情報が表示されます。
Note
より高度な機能を求めるユーザーは、強化されたスクリプトと自動化のために PowerShell を検討することをお勧めします。
Syntax
cmd [/c|/k] [/s] [/q] [/d] [/a|/u] [/t:{<b><f> | <f>}] [/e:{on | off}] [/f:{on | off}] [/v:{on | off}] [<string>]
Parameters
| Parameter | Description |
|---|---|
| /c |
<string>で指定されたコマンドを実行し、コマンド プロセッサを終了します。 |
| /k |
<string>で指定されたコマンドを実行し、コマンド プロセッサを実行したままにします。 |
| /s |
/cまたは/kと共に使用すると、"の前後の最初と最後の引用符 (<string>) を削除する特殊な非解析規則がトリガーされますが、残りのコマンドは変更されません。 |
| /q | エコーをオフにします。 |
| /d | 自動実行コマンドの実行を無効にします。 |
| /a | コマンド出力を米国国立標準研究所 (ANSI) として書式設定します。 |
| /u | コマンド出力を Unicode として書式設定します。 |
/t:{<b><f> | <f>} |
背景色(b)と前景色(f)を設定します。 |
| /e:on | コマンド拡張機能を有効にします。 |
| /e:off | コマンド拡張機能を無効にします。 |
| /f:on | ファイル名とディレクトリ名の入力候補を有効にします。 |
| /f:off | ファイル名とディレクトリ名の入力候補を無効にします。 |
| /v:on | 遅延環境変数の拡張を有効にします。 |
| /v:off | 遅延環境変数の展開を無効にします。 |
<string> |
実行するコマンドを指定します。 |
| /? | コマンド プロンプトにヘルプを表示します。 |
次の表に、 <b> と <f>の値として使用できる有効な 16 進数を示します。
| Value | Color |
|---|---|
| 0 | Black |
| 1 | Blue |
| 2 | Green |
| 3 | Aqua |
| 4 | Red |
| 5 | Purple |
| 6 | Yellow |
| 7 | White |
| 8 | Gray |
| 9 | Light blue |
| a | Light green |
| b | Light aqua |
| c | Light red |
| d | Light purple |
| e | Light yellow |
| f | Bright white |
Remarks
コマンド出力を別のコマンドの入力にリダイレクトするには、パイプ (
|) 演算子を使用します。 For example:<command1> | <command2>二重パイプ (
||) 演算子は、前のコマンドが失敗した場合にのみ、次のコマンドを実行するために使用されます。 特定のシナリオでは、command2は、command1が失敗した場合にのみ実行されます。 For example:<command1> || <command2>コマンド出力をファイルにリダイレクトするには、大角かっこ
>文字を使用します。 For example:<command1> > <file1.txt>複数のコマンドをグループ化または入れ子にするには、
&を使用します。 For example:<command1> & <command2><string>に複数のコマンドを使用するには、コマンド区切り記号&&で区切ります。 For example:<command1> && <command2> && <command3>Note
&&を使用すると、上記のコマンドが正常に完了した場合にのみ、次の&&コマンドが実行されます。Cmdは最初のコマンドを実行し、前のコマンドが成功した場合にのみ次のコマンドに進みます。 それ以外の場合、前のコマンドが失敗した場合、後続のコマンドは実行されません。アンパサンド
&、パイプ|、かっこ( )は、引数として渡すときにエスケープ文字^または引用符で囲む必要がある特殊文字です。コマンドが操作を正常に完了すると、0 の終了コードまたは終了コードが返されません。
ディレクトリ パス、ファイル、または指定する情報にスペースが含まれている場合は、テキストの周囲に二重引用符 (
" ") を使用する必要があります ("Computer Name"など)。 For example:mkdir Test && mkdir "Test 2" && move "Test 2" Test次の特殊文字を囲む引用符を使用する必要があります: & <> [ ] |{ } ^ = ; ! ' + , ' ~ [空白]
/cまたは/kを指定した場合、cmdプロセス、<string>の残りの部分、および引用符は、次のすべての条件が満たされている場合にのみ保持されます。-
/sも使用しません。 - 引用符のセットは 1 つだけ使用します。
- 引用符内に特殊文字を使用しないでください (例: & <> ( ) @ ^ |)。
- 引用符内に 1 つ以上の空白文字を使用します。
- 引用符内の
<string>は実行可能ファイルの名前です。
前の条件が満たされていない場合、
<string>は最初の文字を調べて、それが開始引用符であるかどうかを確認することによって処理されます。 最初の文字が開始引用符の場合は、終了引用符と共に削除されます。 終了引用符の後に続くテキストはすべて保持されます。-
/dを指定しない場合、cmdは次のレジストリ サブキーを検索します。HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun\REG_SZ
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun\REG_EXPAND_SZ
一方または両方のレジストリ サブキーが存在する場合は、他のすべての変数の前に実行されます。
/e:offを使用して、特定のプロセスのコマンド拡張機能を無効にすることができます。 次のcmd値を設定することで、コンピューターまたはユーザー セッション上のすべてのコマンド ライン オプションの拡張機能を有効または無効にできます。HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD
Regedit.exeを使用して、レジストリの REG_DWORD 値を 0x1 (有効) または 0x0 (無効) に設定します。 ユーザー指定の設定はコンピューターの設定よりも優先され、コマンド ライン オプションはレジストリ設定よりも優先されます。
Caution
レジストリを間違って編集すると、システムに重大な障害をもたらす可能性があります。 レジストリを変更する前に、コンピューター上の重要なデータのバックアップを作成する必要があります。
コマンド拡張機能を有効にすると、次のコマンドが影響を受けます。
assoccall-
chdir(cd) color-
del(erase) endlocalforftypegotoif-
mkdir(md) popdpromptpushdsetsetlocalshift-
start(外部コマンド プロセスの変更も含まれます)
遅延環境変数の拡張を有効にした場合は、感嘆符文字 (
!) を使用して、実行時に環境変数の値を置き換えることができます。ファイル名とディレクトリ名の入力候補は、既定では有効になっていません。
cmdを使用して、/f:{on | off}コマンドの特定のプロセスに対してファイル名の入力候補を有効または無効にすることができます。次の
cmd値を設定することで、コンピューター上の コマンドのすべてのプロセス、またはユーザー ログオン セッションのファイル名とディレクトリ名の補完を有効または無効にできます。HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD
REG_DWORD値を設定するには、Regedit.exe を実行し、特定の機能の制御文字の 16 進値を使用します (たとえば、0x9 は TAB で 0x08 は BACKSPACE)。 空白には有効な制御文字ではないため、空白には [0x20] 値を使用します。 ユーザー指定の設定はコンピューターの設定よりも優先され、コマンド ライン オプションはレジストリ設定よりも優先されます。
Caution
レジストリを間違って編集すると、システムに重大な障害をもたらす可能性があります。 レジストリを変更する前に、コンピューター上の重要なデータのバックアップを作成する必要があります。
/f:onを使用してファイル名とディレクトリ名の補完を有効にする場合は、ディレクトリ名の補完には Ctrl + D を使用し、ファイル名の補完には Ctrl + F を使用します。 CTRL+D キーと CTRL+F キーの組み合わせの唯一の違いは、CTRL+D はディレクトリ名にのみ一致し、CTRL+F はファイル名とディレクトリ名の両方に一致することです。cd、md、またはrdの組み込みディレクトリ コマンドでファイルとディレクトリ名の入力候補を使用する場合、ディレクトリの補完が想定されます。Ctrl + D または Ctrl + F を押すと、ファイル名とディレクトリ名の補完が処理されます。 これらのキーの組み合わせ関数は、ワイルドカード文字が存在しない場合は
<string>に追加し、一致するパスの一覧を作成してから、最初に一致するパスを表示します。 パスが一致しない場合、ファイル名とディレクトリ名の入力候補関数はビープ音を鳴らし、表示を変更しません。- 一致するパスのリスト内を移動するには、 Ctrl + D または Ctrl + F を繰り返し押します。
- リストを後方に移動するには、 Shift キーと Ctrl + D または Ctrl + F を同時に押します。
- 一致するパスの保存済みリストを破棄し、新しいリストを生成するには、
<string>を編集して Ctrl+D または Ctrl+F を押します。 - Ctrl+D と Ctrl+F を切り替えると、一致するパスの保存されたリストは破棄され、新しいリストが生成されます。
ファイル名とディレクトリ名の入力候補は、一致するパスを引用符で囲む場合、空白または特殊文字を含むファイル名を正しく処理します。
ファイル名とディレクトリ名の補完を
<string>内から処理すると、補完が処理された<string>の時点で、カーソルの右側にある パス の一部が破棄されます。
環境変数の使用
cmdコマンド シェル環境は、コマンド シェルとオペレーティング システムの動作を決定する変数によって定義されます。 システムとローカルの 2 種類の環境変数を使用して、コマンド シェル環境またはオペレーティング システム環境全体の動作を定義できます。 システム環境変数は、グローバル オペレーティング システム環境の動作を定義します。 ローカル環境変数は、 cmdの現在のインスタンスの環境の動作を定義します。
システム変数を変更できるのは、管理特権を持つユーザーだけです。 これらの変数は、ログオン スクリプトでよく使用されます。 ローカル環境変数は、作成されたユーザーがコンピューターにログオンしている場合にのみ使用できます。 HKEY_CURRENT_USER ハイブで設定されたローカル変数は、現在のユーザーに対してのみ有効ですが、グローバル オペレーティング システム環境の動作を定義します。
次の一覧では、優先順位の降順でさまざまな種類の変数について説明します。
- 組み込みのシステム変数。
- HKEY_LOCAL_MACHINE ハイブで見つかったシステム変数。
- HKEY_CURRENT_USER ハイブで見つかったローカル変数。
- Autoexec.bat ファイルに設定されているすべての環境変数とパス。
- ログオン スクリプトに設定されているすべての環境変数とパス (存在する場合)。
- スクリプトまたはバッチ ファイルで対話形式で使用される変数。
コマンド シェルでは、 cmd の各インスタンスが親アプリケーションの環境を継承します。 そのため、親アプリケーションの環境に影響を与えることなく、新しい cmd 環境の変数を変更できます。
次のいずれかのコマンドを実行して、環境内の環境変数を表示できます。
set
Get-ChildItem Env:
環境変数の設定
変数を表示するには、次のように入力します。
set <VariableName>
変数を追加するには、次のように入力します。
set <VariableName>=<value>
変数を削除するには、次のように入力します。
set <VariableName>=
空白を含め、ほとんどの文字を変数値として使用できます。 特殊文字 <、 >、|、&、または ^ を使用する場合は、エスケープ文字 ^または 二重引用符を前に付ける必要があります。 二重引用符を使用する場合は、等号に続くすべてが値として取得されるため、値の一部として含まれます。 次の例を考えてみましょう。
変数値 New&Nameを作成するには、次のように入力します。
set <VariableName>=New^&Name
変数値 "New&Name"を作成するには、次のように入力します。
set <VariableName>="New&Name"
コマンド プロンプトで set <VariableName>=New&Name (カラット ^ または二重引用符を使用せずに) と入力すると、次のエラー メッセージが表示されることがあります。
"'Name' is not recognized as an internal or external command, operable program or batch file."
変数名では大文字と小文字は区別されません。 ただし、 set は入力したとおりに変数を表示します。 変数名で大文字と小文字を組み合わせて、コードを読みやすくすることができます ( 例: UserName)。
Note
- 個々の環境変数の最大サイズは 8,192 バイトです。
- 名前、値、等号を含むすべての環境変数の最大合計サイズは、1 つのプロセスで 65,536 文字です。
環境変数の値の置き換え
コマンド ラインまたはスクリプトで変数の値を置き換える場合は、変数名をパーセント記号 (%VariableName%) で囲みます。 これにより、 cmd はリテラル テキストとして扱うのではなく、変数の値を参照できます。 スクリプトを実行すると、 cmd は変数のインスタンスをその値に置き換えます。 たとえば、スクリプトで %USERNAME% を使用すると、実際のユーザー名に自動的に置き換えます。 変数の置換は再帰的ではありません。 cmd は変数を 1 回だけチェックします。