| COMMAND.COM | |
|---|---|
| その他の名称 | MS-DOSプロンプト、 Windowsコマンドインタープリタ |
| 開発者 | シアトル・コンピュータ・プロダクツ、IBM、マイクロソフト、ザ・ソフトウェア・リンク、データライト、ノベル、カルデラ |
| 初回リリース | 1980年 (1980) |
| 書かれた | x86 アセンブリ言語[1] |
| オペレーティングシステム | |
| プラットフォーム | 16ビットx86 |
| 後継 | cmd.exe |
| タイプ | コマンドラインインタープリター |

COMMAND.COMは、 MS-DOS、 Windows 95、 Windows 98、 Windows Meのデフォルトのコマンドラインインタープリタです。DOSの場合は、デフォルトのユーザーインターフェースでもあります。また、起動後の最初のプログラム( initプロセス)としての役割も担っています。シェルとして、 COMMAND.COMには対話モードとバッチモードという2つの異なる動作モードがあります。内部コマンドはCOMMAND.COMバイナリ内に直接保存されるコマンドです。したがって、常に利用可能ですが、コマンドインタープリタから直接実行する必要があります。 [要出典]
説明
OS/2およびWindows NTシステムにおけるCOMMAND.COMの後継はcmd.exeですが、COMMAND.COMはこれらのオペレーティングシステムのIA-32バージョン上の仮想DOSマシンでも利用可能です。COMMAND.COMのファイル名は、旧東ドイツのVEB Robotron社によるMS-DOS派生プログラムであるディスク制御プログラム (DCP)でも使用されていました。[2]
COMMAND.COMは DOS プログラムです。COMMAND.COM から起動されるプログラムは、DOS APIを使用してディスクオペレーティングシステムと通信するDOS プログラムです。FreeDOS の互換コマンドプロセッサは、FreeComと呼ばれることもあります。
動作モード
シェルとしてのCOMMAND.COMには、 2つの異なる動作モードがあります。1つ目は対話型モードで、ユーザーが入力したコマンドが即座に実行されます。2つ目はバッチモードで、 .BAT拡張子のテキストファイルとして保存された、事前に定義された一連のコマンドを実行します。
内部コマンド
内部コマンドは、 COMMAND.COMバイナリ内に直接保存されたコマンドです。したがって、常に利用可能ですが、コマンドインタープリタから直接実行することしかできません
↵ Enterすべてのコマンドは、行末のキーが押された後に実行されます。COMMAND.COMは大文字と小文字を区別しません。つまり、コマンドは大文字と小文字を自由に組み合わせて入力できます。
- ブレーク
- +または+でプログラム中断の処理を制御しますCtrlCCtrlBreak
- CHCP
- 現在のシステムコードページを表示または変更します
- CHDIR、CD
- 現在の作業ディレクトリを変更するか、現在のディレクトリを表示します。
- CLS
- 画面をクリアします。
- コピー
- あるファイルを別のファイルにコピーします(コピー先のファイルが既に存在する場合、MS-DOSはそれを置き換えるかどうかを確認します)。(ディレクトリツリーをコピーできる外部コマンドXCOPYも参照してください。)
- CTTY
- 入出力に使用するデバイスを定義します。
- 日付
- システムの日付を表示および設定します
- 削除、消去
- ファイルを削除します。ディレクトリで使用すると、ディレクトリ内のすべてのファイルのみが削除されます。一方、外部コマンドDELTREE は、ディレクトリ自体だけでなく、ディレクトリ内のすべてのサブディレクトリとファイルも削除します。
- DIR
- 指定されたディレクトリ内のファイルを一覧表示します。
- ECHO
- バッチファイルによって実行されたコマンドを画面に表示するか(
ECHO ON)しないか(ECHO OFF)を切り替えます。また、画面にテキストを表示します(ECHO text)。 - 終了
- COMMAND.COMを終了し、起動したプログラムに戻ります
- LFNFOR
- FORコマンドによる長いファイル名の返答を有効または無効にします。( Windows 9x ) [要出典]
- ロードハイ、LH
- プログラムを上位メモリにロードします( DR DOS
HILOADの場合)。 - ロック
- 外部プログラムがボリュームへの低レベルのディスクアクセスを実行できるようにします。(MS-DOS 7.1およびWindows 9xのみ)[要出典]
- MKDIR、MD
- 新しいディレクトリを作成します。
- パス
- COMMAND.COM が実行可能ファイルを検索する場所を制御するPATH環境変数の値を表示または変更します。
- プロンプト
- プロンプトの表示を制御するPROMPT環境変数の値を表示または変更します
- 名前を変更、REN
- ファイルまたはディレクトリの名前を変更します。
- RMDIR、RD
- 空のディレクトリを削除します。
- SET
- 環境変数の値を設定します。引数を指定しないと、定義されているすべての環境変数が表示されます
- 時刻
- システムの時刻を表示および設定します。
- TRUENAME
- ファイルの完全に拡張された物理名を表示し、ASSIGN、JOIN、SUBST論理ファイルシステムマッピングを解決します。[3]
- TYPE
- ファイルの内容をコンソールに表示します。
- UNLOCK
- 低レベルのディスクアクセスを無効にします。(MS-DOS 7.1およびWindows 9xのみ) [要出典]
- バージョン
- オペレーティングシステムのバージョンを表示します
- 検証
- ファイルの書き込み検証を有効または無効にします。
- ボリューム
- ボリュームに関する情報を表示します。
バッチファイルコマンド
制御構造は主にバッチファイル内で使用されますが、対話的に使用することもできます。[4] [3]
- :ラベル
- GOTOのターゲットを定義します
- 呼び出し
- 別のバッチファイルを実行し、古いバッチファイルに戻って続行します。
- 対象
- 反復: 指定されたファイル セットごとにコマンドを繰り返します。
- GOTO
- 指定されたラベルに実行を移動します。ラベルは行の先頭にコロン(
:likethis)で指定します - IF
- 条件文。プログラム実行の分岐を可能にします。
- 一時停止
- プログラムの実行を停止し、続行するには任意のキーを押すようにユーザーに求めるメッセージを表示します。
- REM
- コメント:このコマンドに続くテキストは無視されます。
- Shift
- 各置換パラメータを後続のパラメータに置き換えます (例
%0:%1、%1など%2)。
IFコマンド
終了時に、すべての外部コマンドは呼び出し元プログラムに戻りコード( 0から255までの値)を送信します。ほとんどのプログラムでは、戻りコードに特定の規則があります(たとえば、実行が成功した場合は0)。[5] [6] [7] [8]
プログラムがCOMMAND.COMによって呼び出された場合、 ERRORLEVEL条件付きの内部 IF コマンドを使用して、最後に呼び出された外部プログラムのエラー状態をテストできます。[引用が必要]
COMMAND.COMでは、内部コマンドは新しい値を確立しません。[引用が必要]
変数
COMMAND.COMのバッチファイルには、4種類の変数を使用できます
- 環境変数:これらは%VARIABLE%という形式で、SET文で値に関連付けられます。DOS 3より前のバージョンでは、COMMAND.COMは環境変数をバッチモードでのみ展開します。つまり、コマンドプロンプトで対話的に展開することはできません。[要出典]
- 置換パラメータ:これらは%0、%1 ... %9という形式を持ち、最初はコマンド名とスクリプトに渡される最初の9つのコマンドラインパラメータを含みます(例えば、呼び出しコマンドが の場合、%0は"myscript.bat"、%1は"John"、%2は"Doe"です)。9番目より右側のパラメータは、SHIFTステートメントを使用して range にマッピングできます。[要出典]myscript.bat John Doe
- ループ変数:ループ内で使用され、バッチファイルで実行される場合は%%a形式となります。これらの変数は特定のFOR文内でのみ定義され、そのFOR文で定義された特定の値セットを反復処理します。[要出典]
- Novell DOS 7、OpenDOS 7.01、DR-DOS 7.02以降では、COMMAND.COMはいくつかのシステム情報変数もサポートしています。[4] [9] [3]これは以前は4DOS 3.00以降[10]およびMultiuser DOS [3]にもあった機能ですが、サポートされている変数名のほとんどは異なります。
リダイレクト、パイプ、チェーン
DOS はシングルタスクのオペレーティング システムであるため、コマンドを順番に実行し、一時ファイルとの間でリダイレクトすることによってパイプが実現されます。[引用が必要] COMMAND.COM では、標準エラーチャネルをリダイレクトする規定はありません。[引用が必要]
command < filename- ファイルまたはデバイスからの標準入力をリダイレクトする
command > filename- 標準出力をリダイレクトし、ターゲットファイルが存在する場合は上書きします。
command >> filename- 標準出力をリダイレクトし、ターゲット ファイルが存在する場合はそれに追加します。
command1 | command2- コマンド1の標準出力をコマンド2の標準入力にパイプする
command1 ¶ command2- ASCII-20 (¶、+で起動) で区切られたコマンドは、順番に実行されます (コマンドの連鎖)。[3]つまり、最初にcommand1 が終了するまで実行され、次にcommand2 が実行されます。[3]これは、MS-DOS / PC DOS 5.0以降のCOMMAND.COMの文書化されていない機能です。 [3]これは、Windows NT ファミリのCOMMAND.COMと DR-DOS 7.07 でもサポートされています。 DR-DOS COMMAND.COMのすべてのバージョンでは、感嘆符 (!) を使用する同様の内部関数が既にサポートされていました (元々はConcurrent DOSとMultiuser DOSから派生した機能)。シングルユーザー ラインでは、この機能は内部的に ("!DATE!TIME" などの組み込みスタートアップ スクリプト内)、および有効なファイル名文字としての ! の問題を回避するためにDOSKEYの $T パラメータを介して間接的にのみ使用可能でした。[3] 4DOSは設定可能なコマンドラインセパレータ(4DOS.INI CommandSep=またはSETDOS /C)をサポートしており、デフォルトでは^に設定されています。[10] Windows NTの新しいバージョンのCOMMAND.COMも、 OS/2およびWindows NTファミリのcmd構文との互換性のためにセパレータをサポートしています。[10](cmdは¶セパレータをサポートしていません。)CtrlT
&
制限事項
一般的に、対話モードのコマンドラインの長さは126文字に制限されています。[11] [12] [13] MS-DOS 6.22では、対話モードのコマンドラインの長さは127文字に制限されています。[要出典]
大衆文化において
- 「 COMMAND.COMをロード中」というメッセージは、ターミネーターのHUDビューと、ロボコップが再起動したときの内部ビューポートに表示されます。[要出典]
- コンピューター内部を舞台にした子供向けアニメシリーズ「ReBoot」では、システム(都市に相当)のリーダーはCOMMAND.COMと呼ばれています。[14]
参照
- DOSコマンド一覧
- コマンドシェルの比較
- cmd.exe — さまざまなWindowsおよびOS/2システムのコマンドラインインタープリタ
- — コマンドプロセッサを最初のプロセスとして起動します
- SHELL (CONFIG.SYS ディレクティブ) — デフォルトのコマンドプロセッサを上書きする
- COMSPEC(環境変数) — COMMAND.COMによって設定され、自身の一時部分をリロードします。
- CMDLINE(環境変数) — COMMAND.COM によって設定され、長いコマンドラインを外部プログラムに渡します。
- — サードパーティ製の代替コマンドプロセッサ
- DOSSHELL / ViewMAX — 代替DOSシェル
- — COMMAND.COMという名前ではない同様のコマンドプロセッサを持つ
- PC-MOS/386 — 同様のコマンドプロセッサがあり、これもCOMMAND.COMという名前です。
- 一時プログラム領域- 実行中のアプリケーションまたはCOMMAND.COMの一時部分で使用できるメモリ
- SpartaDOS X — Atariコンピュータ向けの同様の実装
- PowerShell
参考資料
- ^ 「MS-DOS / COMMAND.ASM at master · microsoft/MS-DOS」GitHub
- ^ クルト、リュディガー;グロス、マーティン。ハンガー、ヘンリー (2016-11-29) [2007]。 「Betriebssystem DCP」。www.robotrontechnik.de (ドイツ語)。 2019年4月3日のオリジナルからアーカイブ。2019年4月28日に取得。
- ^ abcdefgh ポール、マティアス R. (1997-07-30) [1994-05-01]。 NWDOS-TIP — Novell DOS 7 に関するヒントとコツ、詳細、バグ、回避策を含む Blick です。リリース 157 (ドイツ語) (第 3 版)。 MPDOSTIP。 2016-11-04 のオリジナルからアーカイブ。2014 年 8 月 6 日に取得。
NWDOSTIP.TXT(注:提供されたリンクは、コレクションの一部であるHTML変換版を指していますMPDOSTIP.ZIP。)[1] - ^ ab 「第7章 バッチ処理」. Caldera DR-DOS 7.02 ユーザーガイド. Caldera, Inc. 1998 [1993, 1997]. 2017年9月11日時点のオリジナルよりアーカイブ。 2017年9月11日閲覧。
- ^ ポール、マティアス R. (1997-05-01) [1993-10-01]. BATTIPs — バッチジョブのプログラムに関するヒントとコツ (ドイツ語)。 MPDOSTIP。 Kapitel 7: エラーレベルが異常です。 2017-08-23 のオリジナルからアーカイブ。2017 年 8 月 23 日に取得。(注:BATTIPS.TXTはMPDOSTIP.ZIPの一部です。提供されているリンクは、HTMLに変換された古いバージョンのBATTIPS.TXTファイルを指しています。)[2]
- ^ Auer, Eric; Paul, Matthias R.; Hall, Jim (2015-12-24) [2003-12-31]. 「MS-DOS errorlevels」. 2015年12月24日時点のオリジナルよりアーカイブ。
- ^ Paul, Matthias R. (2003) [1997]. Auer, Eric (編). 「DOSユーティリティの終了コード(エラーレベル)」. 2017年9月11日時点のオリジナルよりアーカイブ。2017年9月11日閲覧。[3]
- ^ ウィリアム・アレン、リンダ・アレン「Windows 95/98/ME エラーレベル」。2005年10月29日時点のオリジナルよりアーカイブ
- ^ Caldera DR-DOS 7.02 ユーザーガイド. Caldera, Inc. 1998 [1993, 1997]. 2016年11月4日時点のオリジナルよりアーカイブ。 2013年8月10日閲覧。
- ^ abc
[...] 複数のコマンド: 同じコマンド ラインに複数のコマンドをキャレット [^] で区切って入力できます。たとえば、すべての .TXT ファイルをドライブ A: にコピーしてから、CHKDSK を実行してドライブ A のファイル構造が適切であることを確認する場合は、次のコマンドを入力できます。コマンド ラインの合計長が 511 文字を超えない限り、コマンド ラインには必要な数のコマンドを入れることができます。コマンド ラインだけでなく、エイリアスおよびバッチ ファイルでも複数のコマンドを使用できます。既定のコマンド区切り文字を使用しない場合は、コマンドまたは4DOS.INIの CommandSep 指令を使用して別の文字を選択できます。 [...] (複合文字) このオプションでは、同じ行にある複数のコマンドを区切るために使用する文字を設定します。既定値はキャレット [^] です。リダイレクト文字 [<>|]、空白、タブ、カンマ、等号をコマンド区切り文字として使用することはできません。コマンドセパレータはSETLOCALによって保存され、ENDLOCALによって復元されます。この例では、セパレータをチルダ[~]に変更します。(文字自体、またはそのASCIIコード(10進数、または先頭に0xが付いた16進数)を指定できます。) [...] CommandSep = c (^): これは、同一行にある複数のコマンドを区切るために使用される文字です。 [...] 特殊文字の互換性: 弊社製品を2つ以上使用する場合、または異なる製品のユーザーとエイリアスやバッチファイルを共有する場合は、コマンドセパレータ[...]、エスケープ文字[...]、およびパラメータ文字[...]という3つの重要な文字の違いに注意する必要があります。各製品におけるこれらの文字のデフォルト値は、次の表のとおりです。 [...] 製品、区切り文字、エスケープ パラメーター [...] 4DOS: ^、↑、& [...] 4OS2、4NT、Take Command: &、^、$ [...] (上矢印 [↑] は、ASCII Ctrl-X 文字 (数値 24) を表します。) [...]
C:\>COPY *.TXT A: ^ CHKDSK A:SETDOS /CSETDOS /C:C:\>SETDOS /C~— Brothers, Hardin; Rawson, Tom ; Conn, Rex C.; Paul, Matthias R.; Dye, Charles E.; Georgiev, Luchezar I. (2002-02-27). 4DOS 8.00 オンラインヘルプ.
- ^ ポール、マティアス R. (1997-07-01) [1994-01-01]。 MSDOSTIPs — MS-DOS 5.0-7 に関するヒント (ドイツ語)。 MPDOSTIP。 2017-08-22 のオリジナルからアーカイブ。2013 年 10 月 25 日に取得。(注:MSDOSTIP.TXTはMPDOSTIP.ZIPの一部であり、2001年まで維持され、当時多くのサイトで配布されていました。提供されているリンクは、HTMLに変換された古いバージョンのMSDOSTIP.TXTファイルを指しています。)[4]
- ^ ポール、マティアス R. (1997-05-01) [1995-03-01]. 「JPSofts 4DOS 5.5b/c、5.51、5.52a および NDOS に関するヒント」。MPDOSTIP (ドイツ語)。 2016-11-04 のオリジナルからアーカイブ。2015 年 5 月 8 日に取得。
4DOS5TIP.TXT(注:提供されたリンクは、コレクションの一部であるファイルのHTML変換バージョンを指していますMPDOSTIP.ZIP。)[5] - ^ シュルマン, アンドリュー;ブラウン, ラルフ D. ; マクシー, デイビッド; ミシェルズ, レイモンド J.; カイル, ジム (1994) [1993年11月]. 『Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - extending to include MS-DOS 6, Novell DOS and Windows 3.1 (第2版)』. マサチューセッツ州レディング, 米国:アディソン・ウェスリー. 623, 626頁. ISBN 0-201-63287-X。(18+856+6ページ、3.5インチフロッピーディスク)正誤表:[6] [7]
- ^ マーフィー、キャスリーン(1995年7~8月)「サイバースクリーン」Film Comment(Inwap.com経由)。pp. 38~ 43。2015年6月12日時点のオリジナルよりアーカイブ。2015年7月26日閲覧。
さらに読む
[...] Windows 95より前のすべてのMS-DOSバージョンは、[...] COMスタイルのCOMMAND.COMファイルを使用していました。このファイルはファイルの先頭に特別な署名があり、[...] MS-DOS BIOSはシェルをロードする前にこの署名を照会しますが、DR-DOS BIOSは照会しません。[...] COMMAND.COMは[...]「正しい」DOSバージョンで実行されていることを確認するため、DR-DOSでCOMMAND.COMをロードすると、「バージョンが正しくありません」というエラーメッセージが表示され、COMMAND.COMは終了します。そのため、DR-DOSは[...]「コマンドインタープリタが不正または見つかりません」というエラーメッセージを表示します(DR-DOSがCONFIG.SYSの処理を完了した後、SHELL=コマンドプロセッサをロードしようとした場合)。この場合、有効なDR-DOS COMMAND.COMへのパス(C:\DRDOS\COMMAND.COM)を入力すれば、すべて正常に動作しましたしかし、MS-DOS 7.0以降、状況は変わりました。[...] COMMAND.COMは内部的にEXE形式のファイルになったため、魔法の[...]署名[...]がなくなり、[...]チェックも不要になりました。そのため、DR-DOSでは互換性のないCOMMAND.COMを除外する手段がありません。さらに、COMMAND.COMはバージョンチェックも行わなくなり、[...]DR-DOSでは動作せず、[...]クラッシュするだけです[...]PC DOSのCOMMAND.COMはDR-DOSでは正常に動作します[...]
- クーパー、ジム (2001). 『MS-DOS 6.22 特別版(第3版)』Que Publishing . ISBN 978-0-78972573-8。
- ウォルバートン、ヴァン(1990年)『MS-DOSコマンド:Microsoftクイックリファレンス(第4版)』マイクロソフトプレス、ISBN 978-1-55615289-4。
- 2019年5月1日にarchive.todayにアーカイブされました
- 2019年4月28日にarchive.todayにアーカイブされました