Ich habe mit meinem Freund argumentiert, dass die Eingabeaufforderung nur eine GUI-Version von MS-DOS ist, die in der Windows Forms-Umgebung funktioniert. Er ist völlig anderer Meinung als ich.
Wer hat Recht?
windows
command-line
ms-dos
user978733
quelle
quelle
cmd.exe
ist ein ganz anderes Tier als MS-DOS.Antworten:
Dies war einmal wahr, aber es ist nicht mehr.
Über die MS-DOS # Windows-Befehlszeilenschnittstelle - Wikipedia :
Nein, in jedem Windows der NT-Familie (z. B. XP, Vista, 7, 8) sind die Eingabeaufforderung und MS-DOS optisch ähnlich, aber sehr unterschiedlich.
quelle
cmd.exe
wärecommand.com
ein eher kleiner Teil von MSDOS gewesen.Sie sind verschiedene Dinge - Die Eingabeaufforderung ist nicht MS-DOS - aber soweit der Benutzer betrifft sie könnte dasselbe sein , wie sie die gleichen Dinge tun.
Es kommt also auf Ihren Standpunkt an. Aus technischer Sicht ist Ihr Freund richtig, aber aus Anwendersicht sind Sie richtig (sozusagen, da es Unterschiede gibt, die ein Experte erkennen würde).
quelle
Nein.
(Es sei denn, Ihre Definition von Gleichheit geht nicht über » Es ist eine Textschnittstelle und ich kann Programme daraus ausführen. « )
Was ausgeführt wird, wenn Sie im Startmenü auf Eingabeaufforderung klicken, ist der Windows-Befehlsprozessor, auch bekannt als
cmd.exe
. Die integrierten Befehle und die Skriptsyntax (einschließlich vieler Macken) basieren auf der altencommand.com
Version von CP / M und später MS-DOS, sind jedoch ansonsten völlig separate Dinge. Außerdemcommand.com
handelt es sich um ein 16-Bit-Programm, währendcmd.exe
es sich um eine native Windows-Konsolenanwendung handelt.In Windows 95, 98 und ME war es anders, wo
command.com
es in einer MS-DOS-VM mit Windows als Hypervisor ausgeführt wurde (ja, so etwas hatten sie damals schon). Dort hatten Sie eine ganze virtuelle Maschine unter DOS. Aber unter Windows NT, 2000, XP, Vista und 7 - nein. DOS lebt nur dort weiter,ntvdm.exe
wo sich die NT Virtual DOS Machine befindet, die nur eine dünne Emulationsschicht ist, die Aufrufe erfasst, die die CPU nicht direkt ausführen kann (weshalb sie schneller, aber schlechter als DOSBox arbeitet).Auf jeden Fall war sogar
command.com
nur eine Shell für DOS. Es war nicht das Betriebssystem.Im Inneren erschrecke ich jedes Mal, wenn ich Leute sehe, die sich auf ein Fenster mit grau-schwarzem Text als MS-DOS beziehen. In den allermeisten Fällen wissen sie nicht wirklich, worauf sie sich beziehen.
quelle
Soweit ich weiß, ist MS-DOS das von Microsoft veröffentlichte Festplattenbetriebssystem. Die Eingabeaufforderung ist eine nicht grafische Oberfläche, über die Sie mit Ihrem Betriebssystem interagieren können.
Die Eingabeaufforderung ist eine Befehlszeileninterpreter-Anwendung, die in den meisten Windows-Betriebssystemen verfügbar ist. Sie wird offiziell als Windows-Befehlsprozessor bezeichnet, manchmal aber auch als Befehlsshell. Die Eingabeaufforderung ist ein Windows-Programm, das viele der in MS-DOS verfügbaren Befehlszeilenfunktionen emuliert, jedoch nicht MS-DOS ist.
Die Eingabeaufforderung ist eine GUI-Version von command.com unter MS-DOS. cmd.exe ist eine native Windows-Anwendung, die normalerweise in einer Win32-Konsole ausgeführt wird. Auf diese Weise können Funktionen genutzt werden, die nativen Programmen auf der Plattform zur Verfügung stehen und für DOS-Programme ansonsten nicht verfügbar sind.
Da cmd.exe beispielsweise eine native Textmodusanwendung unter OS / 2 ist, kann es echte Pipes in Befehlspipelines verwenden, sodass beide Seiten der Pipeline gleichzeitig ausgeführt werden können. Infolgedessen ist es im Gegensatz zu COMMAND.COM möglich, den Standardfehler in cmd.exe umzuleiten. (COMMAND.COM verwendet temporäre Dateien und führt die beiden Seiten nacheinander nacheinander aus.)
In Wirklichkeit ist cmd.exe ein Windows-Programm, das als DOS-ähnlicher Befehlszeileninterpreter fungiert. Es ist im Allgemeinen kompatibel, bietet jedoch Erweiterungen, die einige der Einschränkungen von COMMAND.COM beheben (die obigen Erklärungen werden von Wikipedia verwendet).
quelle
Dein Freund hat recht. MS-DOS ist / war ein Betriebssystem (Microsoft Disk Operating System ist das, was das Akronym steht.) Die Benutzeroberfläche für DOS ist eine (genannt die ) Eingabeaufforderung.
Die ersten Windows-Versionen liefen auf DOS (was sie zu technisch betriebsbereiten Umgebungen macht, obwohl ich nicht sicher bin, ob jemand diese Unterscheidung mehr trifft), aber spätere Betriebssysteme, beginnend mit dem NT-Kernel, taten dies nicht - DOS war weg.
Die Benutzer benötigten jedoch weiterhin die von der Eingabeaufforderung bereitgestellten Funktionen, und anstelle von command.com haben wir command.exe (und heutzutage cmd.exe) erhalten, die uns beim Ausführen eine Eingabeaufforderung gibt.
Dies ist jedoch nicht die einzige (und auch nicht annähernd erste) Eingabeaufforderung, die von Personen verwendet wurde. Befehlsansagen werden auch Shells genannt, und Unix hat viele, und die Befehle sind unterschiedlich und oft sehr mächtig. In Bezug auf Power hat Microsoft eine neue Eingabeaufforderung für Windows namens PowerShell erstellt, die unglaublich leistungsfähig und interessant ist. Weitere Informationen finden Sie in Wikipedia: http://en.wikipedia.org/wiki/Command-line_interface#Operating_System_Command-Line_Interfaces
quelle
Sie sind nicht dasselbe!
Erstens gibt es aufgrund von Unterschieden in der Plattform (DOS vs Windows) und im Interpreter (command.com vs cmd.exe) offensichtliche Unterschiede wie
mode con:cols=COL lines=ROW
Befehl zum Ändern der Konsolengröße und keintitle
BefehlEs gibt jedoch auch große Unterschiede in den Funktionen und der Syntax interner Befehle zwischen command.com und cmd.exe sowie in einigen externen Tools in beiden Umgebungen. In MS-DOS gibt es
Keine Funktionen, Codeblöcke
()
und lokalen Bereiche, die bedeutenfor
,if
... muss von einem einzelnen Befehl in derselben Zeile gefolgt werdenexit /b
odergoto :eof
setlocal
undendlocal
goto
kann nur zu einem Etikett springen,call
kann nur eine andere Batchdatei startenBefehle können nicht wie gruppiert werden
Kein Fluchtcharakter
^
. Das Drucken von Sonderzeichen wäre mühsam und keine Möglichkeit, mehrzeilige Befehle auszuführenif
if cmdextversion
undif defined
if [/i] string1 compare-op string2
call set %%var%suffix%=string
) von Variablen und keine verzögerte Erweiterung (z. B.echo !var%suffix%!
)~xxxV
variable Unterstützung%variable:~num1,num2%
Unterstützung für Teilzeichenfolgen oder String-Ersatz%variable:str=newstr%
set
, undset /a
, du kannst also nicht rechnenset /p
was bedeutet, dass das Lesen von Benutzereingaben schmerzhaft istset "var=value"
Syntax%*
für die gesamte Befehlszeilefor /d
,for /r
oderfor /l
. Neinfor /f
, das Lesen von Eingaben aus Dateien ist ebenfalls schwierig. Die einzige Form vonfor
in DOS istFOR %variable IN (set) DO command [command-parameters]
findstr
undfind
unterstützt Unicode nicht%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
pushd/popd
cd /d
. Auch neincd path with spaces
undcd "path with spaces"
aufgrund des Mangels an Unterstützung für lange Dateinamencolor
forfiles
assoc
(da keine GUI vorhanden ist und Dateien manuell über die Befehlszeile geöffnet werden müssen, ist keine Dateizuordnung erforderlich.)Viele nützliche externe Befehle in Windows wie where, sort, more (in einigen DOS-Versionen), choice ... fehlen auch in DOS
Und das hat Rich Turner von MS gesagt
Weiterführende Literatur
.bat
Dateien von alten MS DOS-.bat
Dateien?Zusammenfassend lässt sich sagen, dass sie in Bezug auf die Funktionalität ein wenig ähnlich sind, sich aber ansonsten stark unterscheiden
quelle