Kłóciłem się z przyjacielem, że Wiersz polecenia jest tylko wersją GUI MS-DOS, która działa w środowisku formularzy Windows. Całkowicie się ze mną nie zgadza.
Kto ma rację?
cmd.exe
jest zupełnie inną bestią niż MS-DOS.
Kłóciłem się z przyjacielem, że Wiersz polecenia jest tylko wersją GUI MS-DOS, która działa w środowisku formularzy Windows. Całkowicie się ze mną nie zgadza.
Kto ma rację?
cmd.exe
jest zupełnie inną bestią niż MS-DOS.
Odpowiedzi:
To kiedyś było prawdą, ale już nie jest.
Z MS-DOS # Interfejs wiersza polecenia systemu Windows - Wikipedia :
Wszystkie wersje systemu Microsoft Windows mają interfejs MS-DOS podobny do interfejsu wiersza polecenia (CLI). Może to uruchamiać wiele programów DOS, a w różny sposób narzędzi wiersza polecenia Win32, OS / 2 1.x i Posix w tej samej sesji wiersza poleceń, umożliwiając przesyłanie potoków między poleceniami. Interfejs użytkownika i ikona do systemu Windows 2000 były zgodne z natywnym interfejsem MS-DOS.
System operacyjny Windows (do 3.11, Win9x, WinME) działał jako graficzny interfejs użytkownika (GUI) działający na MS-DOS. W systemach Windows 95, 98 i ME część MS-DOS została zintegrowana, traktując oba systemy operacyjne jako kompletny pakiet. Wiersz poleceń uzyskał dostęp do wiersza poleceń DOS (zwykle command.com), poprzez moduł Windows (winoldap.mod).
Nowa linia systemu Windows (Windows NT) uruchamia się przez jądro, którego jedynym celem jest ładowanie systemu Windows. W systemie modułu ładującego nie można uruchamiać aplikacji Win32 w sposób, w jaki OS / 2, UNIX lub Consumer Windows mogą uruchamiać sesje w trybie znakowym.
Więc nie, w każdym systemie Windows z rodziny NT (np. XP, Vista, 7, 8) wiersz polecenia i MS-DOS są wizualnie podobne, ale całkiem inne.
Są to różne rzeczy - wiersz polecenia nie jest MS-DOS - ale jeśli chodzi o użytkownika, mogą być tym samym, co robią te same rzeczy.
To zależy od twojego punktu widzenia. Z technicznego punktu widzenia twój przyjaciel jest poprawny, ale z perspektywy użytkownika masz rację (coś w rodzaju różnic, które dostrzegłby ekspert).
(O ile twoja definicja równości nie wykracza poza przeszłość » Jest to interfejs tekstowy i mogę z niego uruchamiać programy. « )
To, co jest uruchamiane po kliknięciu Wiersza polecenia w menu Start, to Windows Command Processor, alias cmd.exe
. Wbudowane polecenia i składnia skryptów (w tym wiele dziwactw) oparte są na starożytnych command.com
z CP / M i późniejszych MS-DOS, ale poza tym są to zupełnie osobne rzeczy. Ponadto command.com
jest to program 16-bitowy, podczas gdy cmd.exe
jest rodzimą aplikacją konsoli Windows.
W Windows 95, 98 i ME sprawy wyglądały inaczej, gdzie command.com
działałyby na maszynie wirtualnej MS-DOS z Windows działającym jako hypervisor (tak, mieli już takie rzeczy w tym czasie). Tam miałeś całą maszynę wirtualną z systemem DOS. Ale w Windows NT, 2000, XP, Vista i 7 - nie. DOS żyje tylko tam, ntvdm.exe
gdzie jest NT Virtual DOS Machine, która jest tylko cienką warstwą emulacji przechwytującą połączenia, których CPU nie może wykonać bezpośrednio (dlatego działa szybciej, ale gorzej niż DOSBox).
W każdym razie nawet command.com
był tylko powłoką dla DOS. To nie był system operacyjny.
W środku kulę się za każdym razem, gdy widzę ludzi odnoszących się do okna z szarym tekstem jako MS-DOS. W zdecydowanej większości przypadków tak naprawdę nie wiedzą, do czego się odnoszą.
Z tego, co rozumiem, MS-DOS jest dyskowym systemem operacyjnym wydanym przez Microsoft. Wiersz polecenia to nie graficzny interfejs umożliwiający interakcję z systemem operacyjnym.
Wiersz polecenia jest aplikacją interpretera wiersza poleceń dostępną w większości systemów operacyjnych Windows, oficjalnie zwaną Windows Command Processor, ale czasami nazywaną powłoką poleceń. Wiersz polecenia to program systemu Windows, który emuluje wiele zdolności wiersza polecenia dostępnych w MS-DOS, ale tak naprawdę nie jest MS-DOS.
Wiersz polecenia to wersja GUI Command.com w MS-DOS. cmd.exe to natywna aplikacja Windows, zwykle działająca w konsoli Win32. Pozwala to na korzystanie z funkcji dostępnych dla rodzimych programów na platformie, które w innym przypadku byłyby niedostępne dla programów DOS.
Na przykład, ponieważ cmd.exe jest natywną aplikacją w trybie tekstowym w systemie OS / 2, może używać rzeczywistych potoków w potokach poleceń, umożliwiając jednoczesne działanie obu stron potoku. W rezultacie możliwe jest przekierowanie standardowego błędu w cmd.exe, w przeciwieństwie do COMMAND.COM. (COMMAND.COM używa plików tymczasowych i uruchamia obie strony szeregowo, jedna po drugiej).
W rzeczywistości cmd.exe to program systemu Windows, który działa jak interpreter wiersza poleceń podobny do DOS. Jest ogólnie kompatybilny, ale zawiera rozszerzenia, które rozwiązują niektóre ograniczenia COMMAND.COM (powyższe objaśnienia są powoływane przez Wikipedię).
Twój przyjaciel ma rację. MS-DOS jest / był system operacyjny (Microsoft Disk Operating System, co oznacza skrót). UI dla DOS jest nazywany ( szybka) poleceń.
Pierwsze kilka wersji systemu Windows działało na DOS (co czyni je technicznie działającymi środowiskami, chociaż nie jestem pewien, czy ktoś już to robi), ale późniejsze systemy operacyjne, zaczynając od jądra NT, nie zrobiły tego - DOS zniknął.
Jednak ludzie nadal potrzebowali funkcjonalności zapewnianej przez wiersz polecenia, a zamiast Command.com otrzymaliśmy polecenie.exe (a obecnie cmd.exe), które po uruchomieniu daje nam wiersz polecenia.
Ale to nie jedyny (ani nigdzie w pobliżu pierwszego) wiersz polecenia, z którego korzystali ludzie. Wiersze poleceń są również nazywane Powłokami, a Unix ma wiele, a polecenia są różne i często bardzo potężne. Mówiąc o Power, Microsoft stworzył nowy wiersz poleceń dla systemu Windows o nazwie PowerShell, który jest niezwykle potężny i interesujący. Zobacz Wikipedia po więcej: http://en.wikipedia.org/wiki/Command-line_interface#Operating_System_Command-Line_Interfaces
Najwyraźniej wiele osób nie zdaje sobie sprawy, że wiersz DOS i wiersz polecenia systemu Windows to nie to samo. W rzeczywistości są to dwa różne programy - odpowiednio COMMAND.COM i CMD.EXE.
Po pierwsze ze względu na różnice w platformie (DOS vs Windows) i interpreter (Command.com vs cmd.exe), będą oczywiste różnice, takie jak
mode con:cols=COL lines=ROW
polecenia zmiany rozmiaru konsoli ani żadnego title
poleceniaIstnieją jednak również znaczne różnice w możliwościach i składni wewnętrznych poleceń między Command.com i cmd.exe, a także niektórymi narzędziami zewnętrznymi w obu środowiskach. W MS-DOS są
Co oznacza brak funkcji, bloków kodu ()
i lokalnych zasięgów
for
, if
... musi następować jedno polecenie w tym samym wierszuexit /b
lubgoto :eof
setlocal
iendlocal
goto
może tylko przejść do etykiety, call
może uruchomić tylko inny plik wsadowypoleceń nie można grupować jak
(
command1
command2
) >output.txt
Brak postaci ucieczki ^
. Drukowanie znaków specjalnych byłoby uciążliwe i brak możliwości uruchamiania poleceń wielowierszowych
if
if cmdextversion
iif defined
if [/i] string1 compare-op string2
call set %%var%suffix%=string
) Zmiennych i brak opóźnionej ekspansji (np. echo !var%suffix%!
)~xxxV
obsługi zmiennych%variable:~num1,num2%
wsparcia dla podciągów lub ciągów znaków%variable:str=newstr%
set
i
set /a
więc nie możesz wykonywać arytmetykiset /p
co oznacza, że czytanie danych wprowadzanych przez użytkownika jest uciążliweset "var=value"
składni%*
dla całej linii poleceńfor /d
, for /r
albo for /l
. Nie ma for /f
więc trudności z odczytem danych wejściowych z plików. Jedyną formą for
w DOS jestFOR %variable IN (set) DO command [command-parameters]
findstr
i find
nie obsługuje Unicode%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
pushd/popd
cd /d
. Również nie cd path with spaces
i cd "path with spaces"
ze względu na brak obsługi długich nazw plikówcolor
forfiles
assoc
(ponieważ nie ma GUI, a pliki muszą być otwierane ręcznie z wiersza poleceń, więc nie jest potrzebne powiązanie plików)Wiele przydatnych zewnętrznych poleceń w systemie Windows, takich jak: sortowanie, więcej (w niektórych wersjach DOS), wybór ... brakuje również w DOS
I tak powiedział Rich Turner z MS
Również Cmd! = MS-DOS!
Chciałbym również wskazać na powszechne nieporozumienie utrwalane przez artykuły takie jak te powyżej: Cmd <> MS-DOS!
W rzeczywistości:
- Microsoft ostatnio dostarczył „nową” wersję MS-DOS (wersja 8.0 w Windows ME), 16 września 2000 - 16 lat temu (od tego momentu) !!
- MS-DOS był systemem operacyjnym (aczkolwiek względnie prostym systemem operacyjnym według dzisiejszych standardów), którego głównym interfejsem użytkownika była powłoka wiersza poleceń, dopóki nie pojawił się system Windows 3.x i 9.x i działał na MS-DOS
- Język skryptowy powłoki wiersza poleceń MS-DOS był stosunkowo zwięzły i umiarkowanie potężny, ale brakowało mu wielu bogatszych i bardziej zaawansowanych funkcji, które lubimy we współczesnym PowerShell, Bash itp.
- Podczas gdy późniejsze wersje MS-DOS rosły w stopniu wyrafinowania i dodawały / zastępowały niektóre starsze zestawy nowym kodem napisanym w „C”, większość MS-DOS pozostała napisana w zestawie x86 ze względu na wydajność, a ponieważ był to jedyny sposób uzyskaj dostęp do wielu urządzeń i urządzeń peryferyjnych. To spowodowało, że MS-DOS nie jest przenośny na procesory inne niż x86. Jeśli masz takie skłonności, możesz pobrać kod źródłowy dla MS-DOS v1.1 i v2.0, aby zobaczyć, ile wcześniejszych wersji MS-DOS zostało napisanych w asemblerze x86 (wskazówka: prawie wszystkie to)!
https://devblogs.microsoft.com/commandline/rumors-of-cmds-death-have-been-greatly-exaggerated/
.bat
różnią się współczesne pliki od starych .bat
plików MS DOS ?Podsumowując, pod względem funkcjonalności mogą być nieco podobne, ale poza tym bardzo różne