43790


それぞれの位置付けが良く分からないのですが

**Windows10の場合**  
・コマンドプロンプト（シェル）と、PowerShellの大きく2種類に分けられる？  
・MS-DOSは、コマンドプロンプトの古いバージョンなので、Windows10には搭載されていない？  
・バッチファイルは、コマンドプロンプト（シェル）に行わせたい命令列をテキストファイルに記述したもの？  
・PowerShellに行わせたい命令列をテキストファイルに記述することは可能？ その場合は何と呼ぶ？？


CC BY-SA 4.0
2018-05-04T14:58:25.727
43787
2018-05-05T22:03:39.490
7886
question
windows
バッチファイル、MS-DOS、コマンドプロンプト、PowerShellについて


> ・コマンドプロンプト（シェル）と、PowerShellの大きく2種類に分けられる？

Windows 10 に搭載されているコマンドラインインターフェース(CLI)は「コマンドプロンプト」と「PowerShell」の２種類があります。

> ・MS-DOSは、コマンドプロンプトの古いバージョンなので、Windows10には搭載されていない？

これは少し違います。[MS-DOS](https://ja.wikipedia.org/wiki/MS-DOS)
はコマンドプロンプトの古いバージョンではなく、1980年代に作られた独立したオペレーティングシステム(OS)です。

Microsoft は [MS-DOS](https://ja.wikipedia.org/wiki/MS-DOS) の後に Windows
シリーズを開発しましたが、 MS-DOS 時代に作られた多くのソフトウェア資産を Windows 上でそのまま利用できるように MS-
DOSとの互換インターフェースを用意しました。それがコマンドプロンプトとなります。(歴史的経緯の詳細などはご自身でお調べになってください)

> ・バッチファイルは、コマンドプロンプト（シェル）に行わせたい命令列をテキストファイルに記述したもの？

バッチファイルは [MS-DOS](https://ja.wikipedia.org/wiki/MS-DOS)
時代のスクリプト言語で、実行したい命令をテキストファイルに記述したものとなります。 MS-DOS 用のものであるため、コマンドプロンプトで動作可能です。

> ・PowerShellに行わせたい命令列をテキストファイルに記述することは可能？ その場合は何と呼ぶ？？

可能であり、「PowerShellスクリプト」などと呼びます。「PowerShell」はコマンドラインインターフェースの名前でもあり、このスクリプト言語の名前でもあります。

なお Windows 用のスクリプト言語の実行環境としては、PowerShell より以前に Windows Scripting
Host(WSH)というものも提供されております。こちらはコマンドラインインターフェースを統合しておりません。また、あまり流行ってはおりませんね…


CC BY-SA 4.0
2018-05-04T17:12:27.210
43790
2018-05-04T17:12:27.210
27410
43787
answer


> ・MS-DOSは、コマンドプロンプトの古いバージョンなので、Windows10には搭載されていない？  
>  ・バッチファイルは、コマンドプロンプト（シェル）に行わせたい命令列をテキストファイルに記述したもの？  
>  ・MS-DOSはOSだけれども、コマンドプロンプトはOSではないという理解で合っているでしょうか？

MS-
DOSというオペレーティングシステムに`COMMAND.COM`というインタプリタが搭載されていました。`COMMAND.COM`インタプリタが表示するプロンプトのことをコマンドプロンプトと呼び、`COMMAND.COM`インタプリタが解釈するスクリプトのことをバッチファイルと呼びます。

Windows 95 / 98 / MEでは引き続き`COMMAND.COM`インタプリタが使用可能でしたが、Windows NT / 2000 /
XP以降については`COMMAND.COM`は削除され`CMD.EXE`に置き換えられました。  
`CMD.EXE`は`COMMAND.COM`と互換性を持たせつつ機能拡張しているため、引き続きバッチファイルを実行可能です。

PowerShellはこれらとは全く異なり.NETを用いて再設計されたシェルです。

> ・コマンドプロンプト（シェル）と、PowerShellの大きく2種類に分けられる？

ユーザーとの対話入力（プロンプト）を実現しているのはこの２種類です。

しかし、コマンドプロンプトもPowerShellも対話入力の画面は共通しているという印象を受けるかと思います。実際、あの画面はコマンドプロンプトやPowerShellのものではなく[Console](https://docs.microsoft.com/en-
us/windows/console/consoles)と呼ばれるOS機能であり`AllocConsole`
API等を呼び出せばどのようなアプリケーションからでも作成可能です。例えばcygwinなどでも利用されています。

またスクリプトに関してはバッチファイル・PowerShellスクリプトだけでなく、VBScript /
JScriptも標準で用意されています。それぞれVisual BasicやJavaScriptで記述できます。


CC BY-SA 4.0
2018-05-05T22:03:39.490
43813
2018-05-05T22:03:39.490
4236
43787
answer