最近のOSにはDOSプロンプトがなくなり、コマンドプロンプトがふぞくしていますが、具体的にはどのような違いがあるのですか?
私はプロンプトにてプログラムのコンパイルから実行をしているだけなので、違いがよくわからないのです。よろしくお願いします。
そもそもDOSプロンプトとはどのような目的で作られたのでしょう?

このQ&Aに関連する最新のQ&A

A 回答 (5件)

DOSは「Disc Operating System」の略で、FDやHDの操作などを直接行うようにプログラムされています。


PCのハード(機械)と密接につながっているわけです。

それをDOS上のWindows上に「仮装PC」環境を構築しているわけですから、一部のDOSプログラムでは正常に動作しないものもあります。
また、HDを直接いじることとなるfdiskやformatは当然使えないですね。

コマンドプロンプトもかなり互換性が高くなっていますし、たいていのソフトがWindowsへと移行していますので、今となってはそれほど問題はないのでしょうね。
    • good
    • 0
この回答へのお礼

なるほど、Disc Operating Systemの略だったのですか。
HDの操作するコマンドはコマンドプロンプトではできなくなったのですね。
とてもわかりやすかったです。

お礼日時:2002/03/18 13:41

コンソールプログラミングをしておられるようなので、プログラミングの観点から。



単純な違いとしては16ビットMS-DOS機能のサポートがあります。

MS-DOSプロンプトは16ビットMS-DOSのエミュレーションなので、一部のBIOSコールやDOSサービスが利用可能です。
(Windowsが32ビットなので使えないものもあります)

コマンドプロンプトは「見た目をMS-DOSに似せているだけ」の32ビットコンソールなので、16ビット系のサービスやBIOSコールを利用することは出来ません。

たとえば、MS-DOSプロンプトではANSIエスケープシーケンスが利用可能ですが、コマンドプロンプトでは利用できません。
    • good
    • 0
この回答へのお礼

16ビット系のサービスが使えなくなっているのですか。
なんとなく違いがわかりました。ありがとうございます。

お礼日時:2002/03/18 13:48

Q/具体的にはどのような違いがあるのですか?



A/DOSプロンプトは16BitのDOS-VMという機能を利用した物で、OS自体が16ビットベースに互換して、命令を処理します。
DOS命令は元々16ビットですから、互換性も高く古いDOSソフトのほとんどが動作します。

VMはVirtual Machine(バーチャルマシーン)の略で、Windows9x(95からMeまでのwin、2000を除く)では、システムVM(win32VMとwin16VMがその中にある)とDOS-VMで構成され、すべてのソフトウェアがVM上で駆動します。
さらに、DOS機能をほとんど継承しており、その限界から安定性が低いという点があります。


そこで、NT系のOSでは、時代遅れとなり既に安定性を下げてしまうDOSと16ビット命令系をなくしています。
その代わり、DOSエミュレートとしてコマンドプロンプトを搭載しています。
コマンドプロンプトでは、NTVDMという変換回路で16ビット命令を32ビット化して処理します。
そのため、一部の複雑なネイティブ16ビット命令は処理できないと可能性があるのです。

わかりにくいですからまとめると、DOSプロンプトはOSレベルでDOSに互換するのに対し、コマンドプロンプトは実行するソフト命令を変換してDOSに互換するというのが違います。前者は構造上互換性が高いです。
後者は一部命令がエミュレーターになければ処理できません。
Q/DOSプロンプトとはどのような目的で作られたのでしょう?
A/Windowsは元々DOSベースとOS/xベースの2つからなります。前者がDOS→win3,x→win9xという発達をたどったのに対し、
後者は、OS/x互換プログラムからNTへと進化しているとされます。
DOSプロンプトは元々、MS-DOS(MS-DOS/V)及びIBM-DOS(PC-DOS)をWindowsで使うために残った技術です。

Windows3,xはDOS上で動作し、GUI(グラフィカルユーザーインターフェース)とマルチタスク(同時に複数のプログラムを実行する)を実現するためのソフトとして開発された物です。

Windows9xではさらに、その精度を引き上げ、初心者への使い勝手を大幅に向上するために分離したDOS(MS-DOS)を表面上から消しました。これによって、DOSプロンプトが本格的にDOS互換モード(VM)になりました。
ただし、起動時はMS-DOS(リアルモード)をベースにした16ビットコアを読み込み、その後32ビットに移行する形を取っています。

その後、DOSプロンプトはMeでクイックスタートを利用するため内的の見かけ上でも削除されました。ただし、読み込みは、やはり16ビットコードから32ビットを読み込みます。(純粋な内部DOSモードが100%排除されているのではなく、DOSプロンプトオンリー実行するための初期プログラムが排除されています)

そして、WindowsNT系ではコア自体はDOSには無縁ですが、ソフトの関係や今まで使ったユーザーが移ることが多いなどからDOSエミュレートとしてコマンドプロンプトを装備したのです。
いかがでしょう。
    • good
    • 0
この回答へのお礼

詳しく説明が欲しいといいながらここまで書かれるとわからなすぎて申し訳ないです。ですが、windowsの歴史は知ることができました。Meのクイックスタートっていうのもあるのですね。調べてみたいと思います。

お礼日時:2002/03/18 13:56

No.1 の回答に補足します。



Win98 は確かに DOS の下で動いていますが、WinMe は違います。
シャットダウンメニューに“MS-DOS モードで再起動する”という項目が無くなったことでもわかるように、純粋な DOS モードというのは WinMe にはありません。

動作上も、CONFIG.SYS に相当する機能は別な方法で実現されていますが、AUTOEXEC.BAT については、環境変数の設定(SET コマンド)しかできなくなりました。

そのため、従来 AUTOEXEC.BAT で常駐プログラムを起動させていたようなことができなくなり、DOS 使いにとっては大変使いづらい OS になってしまいました。
    • good
    • 0
この回答へのお礼

確かに最近のOSでは『MS-DOSモードで…』がないですね。意外なところでも変化が見られるのですね。AUTOEXECは僕も一度使ったことがありました。非常に便利なシステムでした。それが使えなくなっているのですか、それでは使いづらくなっているのかもしれませんね。ありがとうございます。

お礼日時:2002/03/18 13:52

もともとPCはDOSという基本ソフトで動いていました。


Windowsも3.0、3.1の頃はDOSとは別に購入する必要がありました。

Win95になるとWindowsのベースとしてDOSが組み込まれ、表面上はDOSを意識しなくてもよくなりましたが、Win98やWinMeも基本にはDOSが動いていたのです。

当然ながらDOSで動いていたソフトやプログラムの資産が数多く存在するため、これらを動作させるためにDOS互換の環境をWindows上で作るようになったのです。
これがコマンドプロンプトですね。

Win98などで、PC起動時の選択メニューで表示されるDOSプロンプトは、Windowsを起動させる前の純粋なDOSの状態です。

親ガメがDOSプロンプト
子ガメがWindows
孫ガメがコマンドプロンプトというわけです。

なお、WinNT、Win2000、WinXpはWin9X系とは異なりベースにDOSが組み込まれていませんので、DOS独自の制限事項がなく、安定した動作が可能となっています。

この回答への補足

以前のOSがDOSというものだったのですね。
ですが、孫ガメのコマンドプロンプトになって他に違いはあるのでしょうか?

補足日時:2002/03/16 17:41
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QMS-DOSのコマンドプロンプト

MS-DOSのコマンドプロンプトへのショートカットがどこかいってしまいました。普通ならスタート>アクセサリー>コマンドプロンプトから行けるはず…!ですが、いろいろと手違いがありまして、そのショートカットがなくなっております。

●そこで、DOSを直接立ち上げたいのですが、プログラムファイルの場所ってどこでしょうか?通常どこにプログラムが格納されているものなのか、教えていただければ幸いです。使っているOSはWin-XPです。

C:\\ほにゃほにゃ\\ほにゃほにゃ\\ほにゃらら.exe

みたいな感じでDosの置いてある場所か、あるいはDOSを立ち上げる方法(※セーフモードではなく)を教えていただければ幸いです。

よろしくお願い致します。

Aベストアンサー

WindowsがCドライブにあるとして、

c:\windows\system32\cmd.exe

これがコマンドプロンプトのファイルなので、これのショートカットを作成すればいいですよ。

Qコマンドプロンプトの実行ファイル作成

ipconfigなど表示するのに、***.batファイルを作りました。

例えば、
ipconfig /renew
pause
と記述された.batファイルを実行すると、その続きを同じウィンドウで入力したくても消えてしまいます。

せっかく実行したウィンドウを消さないで、続けて入力できるようにするにはどうしたらいいでしょうか?

Aベストアンサー

最後に、新しいコマンドシェルを起動するようにしてはどうでしょう?
バッチファイルの最後に、
cmd
を追加してみてください。プロンプトが出て、コマンドを入力できます。

Qコマンドプロンプトで前と同じまたはそれ以前のコマンドを簡単に…

こんにちは。コマンドプロンプトを使ってjavaを使用しています。
一度打ったコマンド(入力)をもう一度打つのはきついので、質問した次第であります。OSはXPです。
前に打ったことがあるコマンドをカーソルキーの上下を使って簡単に出せると聞きました。

98の時や2000の時のやり方でもかまいません。教えてください。よろしくお願いします。

Aベストアンサー

doskeyコマンドは、NT以降デフォルトで有効になっています。
この一部の機能でコマンド履歴というものが今回の回答にあたります。
MS-DOS~MeではMS-DOSプロンプトでdoskeyを実行するか、
Autoexec.batに記述する記述するがありました。
doskeyにはこの他にもマクロというのがあります。
興味があれば、Web検索してみてください。

Qbatファイルを実行してコマンドプロンプトを開き自動的にコマンドを入力させたい

batファイルを実行すると、コマンドプロンプトが開かれ、
そのときにすでに「nbtstat -a」と入力された状態になるbatファイルを作ろうとしています。
メモ帳から普通に「nbtstat -a」と入力し保存して実行しましたが、一瞬コマンドプロンプトの画面が表示され、すぐに閉じてしまいます。
ためしに「nbtstat -a %computername%」と入力して保存し、実行しましたが、結果は同じです。
何かいい方法はありませんか?

Aベストアンサー

バッチでは難しいと思います。
(回答No.1の記述でバッチファイルを作成してしまうと無限ループに陥ります。)

コマンドプロンプトを起動する度にnbtstatを実行させるのが目的であれば、参考URLの方法が確実です。

参考URL:http://homepage2.nifty.com/winfaq/wxp/hints.html#1417

Qコマンドプロンプトでのcopyコマンド

Windowsのコマンドプロンプトでのcopyコマンドで困っています。

 フォルダ内に次のテキストファイル群があり、これを1つのファイルに結合したいです。
   0201.log
   0202.log
   0203.log
     :
     :
   0229.log
と日付.logがある。
 プロンプトから
   copy 02*.log feb.log
とすると結合してはくれるのですが、順番が前後する場合があります。
 0201の次に0210がきて0211,0212,..0219,0202,0203といった感じです。

 コマンドプロンプトからdirでファイル名を表示させると、確かに結合される順番と合って
いる様子。
 この順番を変えてやればいいのかと思いますが、やり方がわかりません。

 もちろん
   copy 0201.log + 0202.log + 0203.log + ....
とやる方法や、全テキストデータをnotepad等で開いて地道に結合する方法もあるのでしょうが、
効率悪すぎます。

 0201,0202,0203...と順番通りに結合する方法がありましたら、教えてください。

 なお、type 02*.log >> feb.logでも望む結果は得られませんでした。

Windowsのコマンドプロンプトでのcopyコマンドで困っています。

 フォルダ内に次のテキストファイル群があり、これを1つのファイルに結合したいです。
   0201.log
   0202.log
   0203.log
     :
     :
   0229.log
と日付.logがある。
 プロンプトから
   copy 02*.log feb.log
とすると結合してはくれるのですが、順番が前後する場合があります。
 0201の次に0210がきて0211,0212,..0219,0202,0203といった感じです。

 コマンドプロンプトからdirでファイル名を表示させる...続きを読む

Aベストアンサー

>0201の次に0210がきて0211,0212,..0219,0202,0203といった感じです。
> コマンドプロンプトからdirでファイル名を表示させると、確かに結合される順番と合っている様子。

うーん。正常なWindowsだとそうはならないはずですが。。。
dir /on
で、希望通りの順序になるとすると、

del feb.log
for /f %A in ('dir /on /b 02*.log') do type %A >>feb.log

(バッチファイルにするときは、for /f %%A in ('dir /on /b 02*.log') do type %%A >>feb.log )


このカテゴリの人気Q&Aランキング

おすすめ情報