Windows'ta CMD ve Komut istemi arasındaki fark nedir?


29

Şimdiye kadar, bunu hiç düşünmedim (ve hiç gözlemlemedim) cmd ve command iki farklı şey var. İyi, onlar mı

Şu resme bir bak:

enter image description here

Aslında ben genellikle açarım cmd ne zaman komut satırına girmek istediğimde Çalıştır iletişim kutusundan (Git / VIM için). Böylece, ekran konumunu, yazı tipini, rengi vb. Özelleştirdim. Bugün, bir değişiklik için, yazılı command Çalıştır yerine cmd ve penceremde yeni bir şey olduğunu buldu. Penceresinde "DOS" var.

Yani, belli ki aradaki fark olmalı cmd ve command. bilmek isterim

  1. Aralarındaki fark.
  2. Microsoft neden onları ayırdı (Unix & Linux, varsayılan olarak yalnızca bir kabuğu vardır, Bash).

11
Farz ediyorum command.com eski 16bit sürümüdür (yalnızca 32bit kurulumlarda kullanılabilir). Windows 7'nin 64bit sürümünde mevcut değil.
Der Hochstapler

11
UNIX ve Linux var bir kabuktan daha fazlası mevcut. Varsayılan kabuk tipik olarak Bash'dir.
ephsmith

@ephsmith dediğim gibi ..
Surya

"Komut istemi" ifadesinin teknik olarak command.exe veya cmd.exe dosyasına başvurmak için kullanılabileceğini, ancak uygulamada neredeyse her zaman cmd.exe anlamına geldiğini unutmayın.
Harry Johnston

Unix'in toplamda dört kabuğu var: bunlar csh, ksh, bash, zsh.
Deb

Yanıtlar:


31

TL; DR

Bir 32 bit konsol programını çalıştırdığınızda, bu program tarafından yürütülür. cmd; 16 bit konsol program çalıştırdığınızda, bu program tarafından yürütülür. command.

ayrıntılar

Windows XP, eski 16 bit uygulamaları desteklemek için bir alt sistem içerir.

Eski 16 bit uygulamalar DOS ve Windows programları olarak kullanılabilir. DOS programları, doğası gereği konsol uygulamalarıdır ve komut istemi görünümünde çalışırlar. Ancak 32-bit Windows konsol uygulamaları çok benzer ve aynı görünüyor.

Komut işlemcisi / tercüman cmd birkaç amacı var:

  • 32 bit metin Windows konsol programını yürütmek için
  • Çeşitli komut satırı işlevlerini sağlamak ve işlemek için ( dir, copy, vb.)
  • Toplu iş dosyalarını yorumlama ve yürütme (DOS uyumlu .bat dosyalar ve NT uyumlu .cmd Dosyalar)

Eski bir 16 bit konsol programını çalıştırdığınızda, NTVDM (Windows NT Sanal DOS Makinesi) tarafından yürütülür. Öykünülmüş bir DOS sistemi sağlar (dolayısıyla sanal DOS makinesi özel bir sanal makine yazılımı çalıştırmaya benzer, ancak öykünme katmanı daha basittir. command gerçek DOS'a çok daha yakın olan komut yorumlayıcısının 16 bitlik bir sürümüdür cmd.exe hangi aslında bir Windows programı (ve aksine, Windows PE başlığına sahip command.com DOS MZ başlığına sahip olan).

command aynı amaçlara sahiptir cmd sadece 16 bit programları desteklemesi dışında. Ek olarak, desteklemiyor .cmd dosyalar ve daha az yerleşik komut vardır ve sözdiziminde daha sınırlıdır ( cmd daha yeni, daha modern, daha gelişmiş bir komut satırı tercümanı, benzer 4DOS ).

Ancak, grafiksel DOS programlarını (eski oyunlar gibi) destekler, ancak bunları çalıştırmanın başarısı, ekran kartı sürücülerine ve programın niteliğine bağlıdır. Sunulan çok sayıda site var çeşitli numaralar DOS oyunlarının Windows'ta çalışmasını sağlamak (Vista ve üstü başarılar genellikle XP'den daha sınırlı olsa da).

Windows'un 64 bit sürümlerinin 16 bit programların desteğini tamamen düşürdüğü ve bu nedenle command hiç de, ne DOS ne de Windows 16-bit programlar çalışacak ve bunun yerine bir (yanıltıcı) atacak hata mesajı .


Teknik notlar

command.com bir .com DOS programlarıyla geriye dönük uyumluluk için uzantı, ancak harici DOS komutlarının diğer Windows sürümlerinin çoğu gibi, dahili olarak, aslında bir Windows PE'si .exe dosya. Bu, Windows, uzantıyı çoğu dosya türünün nasıl işleneceğini belirten bir gösterge olarak kullanırken, çalıştırılabilir olanlar için uzantıyı görmezden geldiğini ve içeriğine baktığını gösteren ilginç bir gözlem sağlar. .exe olarak kabul edilirse işe yaramaz .com ). Bu soru Bu etki ile ilgilidir.


Elbette cmd.exe'den 32-bit bir konsol programını çalıştırabilirken, buna gerek yok. Konsol kipinde çalıştırılabilir bir dosyayı çift tıklarsanız, "inside" cmd.exe dosyasını çalıştırmaz. Benzer şekilde, command.exe de NTVDM ile aynı şey değildir.
Harry Johnston

1
Komut ismiyle cümle kurmaktan nefret ediyorum.
Synetech

& Gt; command.exe gerçekten NTVDM ile aynı şey değil Hayır, ama bu bir Bölüm Birkaç DLL ile birlikte (XP sistemde çalışması için 16-bit konsol uygulamaları almaya çalışırken bunu zor yoldan öğrendim).
Synetech

"DOS programları tabiatı gereği konsol uygulamaları "- Neden bunu söyledin? Komut olmayan satır TUI DOS olmayan uygulamalar bir şekilde 'doğal' değil mi? :)
Karan

Why would you say this? Are non-command line non-TUI DOS apps 'unnatural' in some way? Sırala. 9x'te gayet iyiydiler, ancak grafik uygulamaları (örneğin, oyunlar) artık XP + 'da artık düzgün çalışmıyorlar, bu nedenle bu günlerde Windows'ta (yerel olarak) çalıştırılan DOS uygulamalarının büyük çoğunluğu gerçekten komut satırı araçları tam teşekküllü, grafik uygulamalar. 64 bit makinelerde, 16 bit uygulamalar tümüyle yerel olarak çalıştırılmaz, ancak 32 bit uygulamalar bile özellikle konsol uygulamaları Vista desteği düştü için tam ekran konsolları .
Synetech

8

Bir DOS programı olan COMMAND.COM'un aksine, cmd.exe, genellikle Win32 konsolunda çalışan yerel bir Windows uygulamasıdır. Bu, DOS programlarında kullanılamayan, platformdaki yerel programların kullanabileceği özelliklerden yararlanmasını sağlar.

Ayrıca...

Hem OS / 2 hem de cmd.exe dosyasının Windows NT sürümleri, command.com'un "Kötü komut veya dosya adı" battaniyesine (hatalı biçimlendirilmiş komutlar durumunda) göre daha ayrıntılı hata iletilerine sahiptir.

Bu gelen bu bilgi verici Wikipedia makalesi.

Daha eski command.com komutlarının daha yeni cmd.exe işlevselliğine nasıl döndürüldüğünden bahsedilir ... örneğin ...

deltree (command.com) işlevselliği / s parametresi biçiminde rd (cmd.exe) konumuna getirildi

Yani, okumaktan çekinmeyin.


5

command.com uyumluluk için sağlanan DOS kabuğudur.

cmd.exe OS / 2'den devralınan yerli bir Win32 programıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.