พรอมต์คำสั่งและ MS-DOS เหมือนกันหรือไม่


12

ฉันทะเลาะกับเพื่อนของฉันว่าCommand Promptเป็นเพียงรุ่น GUI ของ MS-DOS ซึ่งทำงานในสภาพแวดล้อมแบบ Windows เขาไม่เห็นด้วยกับฉันเลย

ถูกต้องใคร


2
งานวิจัยของคุณบอกอะไรคุณจนถึงตอนนี้
slhck

4
cmd.exeเป็นสัตว์ร้ายต่างจาก MS-DOS
Sathyajith Bhat

7
MS-DOS เป็นระบบปฏิบัติการ พรอมต์คำสั่ง Windows เป็นอินเทอร์เฟซที่ดูเหมือน MS-DOS
Der Hochstapler


3
สำเนาที่เป็น
SamB

คำตอบ:


20

นี่เป็นเรื่องจริงเพียงครั้งเดียว แต่มันไม่ใช่อีกต่อไป

จากMS-DOS # อินเตอร์เฟสบรรทัดคำสั่งของ Windows - Wikipedia :

Microsoft Windows ทุกรุ่นมี MS-DOS เช่น command-line interface (CLI) สิ่งนี้สามารถเรียกใช้ DOS และหลาย ๆ อย่าง Win32, OS / 2 1.x และยูทิลิตี้บรรทัดคำสั่ง Posix ในเซสชันบรรทัดคำสั่งเดียวกันทำให้สามารถไพพ์ระหว่างคำสั่งได้ อินเทอร์เฟซผู้ใช้และไอคอนสูงถึง Windows 2000 ตามอินเทอร์เฟซดั้งเดิมของ MS-DOS

Consumer Windows (สูงสุด 3.11, Win9x, WinME) วิ่งเป็น Graphical User Interface (GUI) ที่ทำงานอยู่ด้านบนของ MS-DOS ด้วย Windows 95, 98 และ ME ส่วน MS-DOS ได้ถูกรวมเข้าด้วยกันทำให้ระบบปฏิบัติการทั้งสองเป็นแพคเกจที่สมบูรณ์ บรรทัดคำสั่งเข้าถึงบรรทัดคำสั่ง DOS (โดยปกติคือ command.com) ผ่านโมดูล Windows (winoldap.mod)

บรรทัดใหม่ของ Windows (Windows NT) บูตผ่านเคอร์เนลที่มีวัตถุประสงค์เพื่อโหลด Windows เท่านั้น อย่างใดอย่างหนึ่งไม่สามารถเรียกใช้โปรแกรมประยุกต์ Win32 ในระบบตัวโหลดในลักษณะที่ OS / 2, UNIX หรือ Consumer Windows สามารถเปิดเซสชันโหมดอักขระ

ดังนั้นไม่มีใน Windows ทุกรุ่นจากตระกูล NT (เช่น XP, Vista, 7, 8) พรอมต์คำสั่งและ MS-DOS นั้นมีลักษณะคล้ายกัน แต่แตกต่างกันมาก


จริงๆแล้วฉันจะบอกว่ามันไม่เคยเป็นจริง การเทียบเท่าcmd.exeจะcommand.comเป็นส่วนเล็ก ๆของ MSDOS

9

พวกเขาต่างกัน - พรอมต์คำสั่งไม่ใช่ MS-DOS - แต่เท่าที่ผู้ใช้กังวลว่าพวกเขาอาจเป็นสิ่งเดียวกับที่พวกเขาทำสิ่งเดียวกัน

ดังนั้นมันขึ้นอยู่กับมุมมองของคุณ จากมุมมองทางเทคนิคของเพื่อนของคุณมันถูกต้อง แต่จากมุมมองของผู้ใช้คุณถูกต้อง (เรียงตามที่มีความแตกต่างที่ผู้เชี่ยวชาญจะเห็น)


ฉันคิดว่าคุณหมายถึงสิ่งตรงกันข้าม เขาเป็นคนที่ถูกต้องทางเทคนิคเพราะพวกเขาไม่ได้เป็นสิ่งเดียวกันอย่างแท้จริงเพื่อนคือคนที่ถูกต้องจริงเพราะพวกเขาเป็นสิ่งเดียวกันกับผู้ใช้
แบรด

@Brad - วิธีที่ฉันอ่านคำถามคือ OP บอกว่าพวกเขาเหมือนกัน แต่เพื่อนของเขาบอกว่าพวกเขาไม่ได้
ChrisF

8

เลขที่

(ยกเว้นนิยามของความเท่าเทียมกันไม่ขยายผ่านมา » มันเป็นอินเตอร์เฟซที่ข้อความและฉันสามารถเรียกใช้โปรแกรมจากมัน. « )

สิ่งที่จะดำเนินการเมื่อคุณคลิกCommand Promptใน Start Menu เป็นตัวประมวลผลคำสั่งของ Windows cmd.exeอาคา คำสั่งในตัวและไวยากรณ์การเขียนสคริปต์ (รวมถึงนิสัยใจคอจำนวนมาก) นั้นอิงตามแบบโบราณcommand.comจาก CP / M และ MS-DOS รุ่นใหม่กว่า แต่นอกเหนือจากนั้นพวกมันแยกจากกันอย่างสิ้นเชิง นอกจากนี้ยังcommand.comเป็นโปรแกรม 16 บิตในขณะที่cmd.exeเป็นแอพพลิเคชันคอนโซลของ Windows

สิ่งต่าง ๆ ใน Windows 95, 98 และ ME ซึ่งcommand.com จะทำงานใน MS-DOS VM โดย Windows ทำหน้าที่เป็นไฮเปอร์ไวเซอร์ (ใช่พวกเขามีสิ่งนั้นในเวลานั้น) ที่นั่นคุณมีเครื่องเสมือนทั้งหมดที่ใช้งาน DOS แต่ใน Windows NT, 2000, XP, Vista และ 7 - ไม่ ดอสอาศัยอยู่ที่นั่นntvdm.exeซึ่งเป็น NT Virtual DOS Machine ซึ่งเป็นเลเยอร์การจำลองบาง ๆ ที่จับการโทรที่ CPU ไม่สามารถเรียกใช้งานได้โดยตรง (ซึ่งเป็นสาเหตุที่ทำให้ทำงานได้เร็วขึ้น

ไม่ว่าในกรณีใด ๆ แม้แต่command.comเพียงเปลือกสำหรับ DOS มันไม่ใช่ระบบปฏิบัติการ

ข้างในฉันประจบประแจงจริง ๆ ทุกครั้งที่ฉันเห็นคนที่อ้างถึงหน้าต่างที่มีข้อความสีเทาบนดำเป็น MS-DOS ในกรณีส่วนใหญ่พวกเขาไม่รู้จริง ๆ ว่าพวกเขาหมายถึงอะไร


4

จากสิ่งที่ฉันเข้าใจ MS-DOS เป็นระบบปฏิบัติการดิสก์ที่ Microsoft เปิดตัว พรอมต์คำสั่งเป็นอินเทอร์เฟซที่ไม่ใช่แบบกราฟิกที่ช่วยให้คุณสามารถโต้ตอบกับระบบปฏิบัติการของคุณ

Command Prompt เป็นแอพพลิเคชั่นตัวแปลบรรทัดคำสั่งที่มีอยู่ในระบบปฏิบัติการ Windows ส่วนใหญ่เรียกอย่างเป็นทางการว่า Windows Command Processor แต่บางครั้งเรียกว่า command command Command Prompt เป็นโปรแกรม Windows ที่เลียนแบบความสามารถของบรรทัดคำสั่งจำนวนมากที่มีใน MS-DOS แต่ไม่ใช่ MS-DOS จริงๆ

Command Prompt เป็นคอมมิวนิตี้ GUI เวอร์ชั่นใน MS-DOS cmd.exe เป็นแอปพลิเคชัน Windows ดั้งเดิมที่มักจะทำงานในคอนโซล Win32 สิ่งนี้ทำให้สามารถใช้ประโยชน์จากคุณสมบัติที่มีให้กับโปรแกรมเนทีฟบนแพลตฟอร์มที่ไม่สามารถใช้งานได้กับโปรแกรม DOS

ตัวอย่างเช่นเนื่องจาก cmd.exe เป็นแอปพลิเคชันโหมดข้อความดั้งเดิมบน OS / 2 จึงสามารถใช้ไพพ์จริงในไพพ์ไลน์คำสั่งทำให้ทั้งสองฝั่งของไพพ์ไลน์ทำงานพร้อมกัน ดังนั้นจึงเป็นไปได้ที่จะเปลี่ยนเส้นทางข้อผิดพลาดมาตรฐานใน cmd.exe ซึ่งแตกต่างจาก COMMAND.COM (COMMAND.COM ใช้ไฟล์ชั่วคราวและรันทั้งสองด้านตามลำดับโดยเรียงต่อกัน)

ในความเป็นจริง cmd.exe เป็นโปรแกรม Windows ที่ทำหน้าที่เป็นล่ามบรรทัดคำสั่งเหมือนดอส โดยทั่วไปสามารถใช้งานร่วมกันได้ แต่ให้ส่วนขยายที่ระบุถึงข้อ จำกัด บางประการของ COMMAND.COM (คำอธิบายข้างต้นถูกอ้างถึงโดย Wikipedia)


2

เพื่อนของคุณพูดถูก MS-DOS คือ / เป็นระบบปฏิบัติการ (Microsoft Disk Operating System คือตัวย่อย่อมาจาก) UI สำหรับ DOS เรียกว่าพรอมต์คำสั่ง( the )

Windows สองสามเวอร์ชันแรกทำงานบน DOS (ทำให้พวกเขามีสภาพแวดล้อมการทำงานทางเทคนิค แต่ฉันไม่แน่ใจว่าจะมีใครแยกความแตกต่างนั้นได้อีก) แต่ต่อมา OS ก็เริ่มต้นด้วยเคอร์เนล NT ไม่ได้ - DOS หายไป

อย่างไรก็ตามผู้คนยังคงต้องการฟังก์ชั่นที่พรอมต์คำสั่งให้และแทนที่จะเป็นคอมไฟล์เราได้ command.exe (และทุกวันนี้ cmd.exe) ซึ่งเมื่อทำงานจะทำให้เรามีพรอมต์คำสั่ง

แต่นั่นไม่ใช่คำสั่ง (หรือที่ใกล้กับที่แรก) เท่านั้นที่ผู้คนเคยใช้ Command Prompts เรียกอีกอย่างว่า Shells และ Unix มีมากมายและ Command ต่างกันและมีประสิทธิภาพมาก การพูดถึงพลังงาน Microsoft ได้สร้างพรอมต์คำสั่งใหม่สำหรับ Windows ชื่อ PowerShell ซึ่งมีประสิทธิภาพและน่าสนใจอย่างไม่น่าเชื่อ ดู Wikipedia สำหรับข้อมูลเพิ่มเติม: http://en.wikipedia.org/wiki/Command-line_interface#Operating_System_Command-Line_Interfaces


> UI สำหรับ DOS เรียกว่าพรอมต์คำสั่ง (the) อีกทั้ง“ บรรทัดคำสั่ง”
Synetech

และ CLI หรืออินเตอร์เฟสบรรทัดคำสั่ง
Mark Allen

ในทางเทคนิค CLI เป็นอินเทอร์เฟซชนิดไม่ใช่อินสแตนซ์เฉพาะของหนึ่ง มันจะเหมือนกับการเรียก Windows a GUI (เช่นฉันใช้ Windows GUI ) คุณสามารถพูดได้และมันเป็นเรื่องจริง / ถูกต้องทางเทคนิค แต่มันก็แปลก
Synetech

ฉันเพิ่งเรียกมันว่าพรอมต์คำสั่ง :)
Mark Allen

ฉันเพิ่งเรียกมันว่า DOS (อย่างน้อยฉันก็เคย, บางครั้งตอนนี้, ฉันได้รับการเรียกอย่างไม่เต็มใจว่าDOSจริง ๆ )
Synetech

1

พวกเขาไม่เหมือนกัน!

เห็นได้ชัดว่าผู้คนจำนวนมากไม่รู้ตัวว่า DOS Prompt และ Windows Command Prompt นั้นไม่เหมือนกัน จริงๆแล้วพวกเขาเป็นสองโปรแกรมที่แตกต่างกัน - COMMAND.COM และ CMD.EXE ตามลำดับ

ทราบพรอมต์คำสั่งของคุณ

ประการแรกเนื่องจากความแตกต่างในแพลตฟอร์ม (DOS เทียบกับ Windows) และล่าม (command.com vs cmd.exe) จะมีความแตกต่างที่ชัดเจนเช่น

  • DOS ทำงานในโหมดเต็มหน้าจอโดยไม่มีโหมดหน้าต่างดังนั้นจึงไม่มีmode con:cols=COL lines=ROWคำสั่งให้ปรับขนาดคอนโซลและไม่มีtitleคำสั่ง
  • DOS ไม่รองรับการทำงานหลายอย่าง, ผู้ใช้หลายคน, การอนุญาต, ชื่อไฟล์แบบยาว, symlinks / hardlinks, เครือข่าย, Unicode, ดิสก์แบบไดนามิกและไดรฟ์ข้อมูลขั้นสูง ... ดังนั้นจึงไม่มีเครื่องมือในการจัดการเหล่านั้น

แต่ก็มีความแตกต่างที่สำคัญในความสามารถและไวยากรณ์ของคำสั่งภายในระหว่าง command.com และ cmd.exe รวมถึงเครื่องมือภายนอกบางอย่างในสองสภาพแวดล้อม ใน MS-DOS มี

  • ไม่มีฟังก์ชั่นบล็อคโค้ด()และขอบเขตภายในซึ่งหมายถึง

    • for, if... ต้องตามด้วยคำสั่งเดียวในบรรทัดเดียวกัน
    • ไม่exit /bหรือgoto :eof
    • ไม่setlocalและendlocal
    • gotoสามารถข้ามไปที่ป้ายกำกับcallเท่านั้นจึงจะเริ่มได้อีกชุดไฟล์
    • คำสั่งไม่สามารถรวมกลุ่มกันได้เช่น

      (
      command1
      command2
      ) >output.txt
      
  • ^ไม่มีตัวหนี การพิมพ์อักขระพิเศษอาจทำให้เจ็บปวดและไม่มีความเป็นไปได้ในการรันคำสั่งหลายบรรทัด

  • ไม่มีรูปแบบพิเศษของ if
    • ไม่if cmdextversionและif defined
    • ไม่มีการเปรียบเทียบสตริงตัวเลขและตัวพิมพ์เล็ก if [/i] string1 compare-op string2
  • ไม่มีประวัติคำสั่งและการเสร็จสิ้นการโต้แย้งคำสั่ง
  • ไม่มีการขยายตัวทางอ้อม (เช่นcall set %%var%suffix%=string) ของตัวแปรและไม่มีการขยายตัวล่าช้า (เช่นecho !var%suffix%!)
  • ไม่มีการจัดการสตริงขั้นสูง
    • ไม่~xxxVรองรับตัวแปร
    • ไม่สนับสนุนสตริงย่อย%variable:~num1,num2%หรือการแทนที่สตริง%variable:str=newstr%
  • ไม่มีชื่อตัวแปรบางส่วนที่ตรงกันสำหรับsetและ
    • ไม่set /aคุณไม่สามารถทำเลขคณิตได้
    • ไม่set /pซึ่งหมายความว่าการอ่านอินพุตของผู้ใช้เป็นความเจ็บปวด
    • ไม่มีset "var=value"ไวยากรณ์
  • ไม่ใช่%*สำหรับบรรทัดคำสั่งทั้งหมด
  • ไม่มีfor /d, หรือfor /r for /lไม่ต้องfor /fอ่านอินพุตจากไฟล์ก็ยากเช่นกัน รูปแบบเดียวของforใน DOS คือFOR %variable IN (set) DO command [command-parameters]
  • ไม่findstrและfindไม่รองรับ Unicode
  • ไม่มีตัวแปรสภาพแวดล้อมพิเศษเช่น%CD% %DATE% %TIME% %RANDOM% %ERRORLEVEL% %CMDEXTVERSION% %CMDCMDLINE% %HIGHESTNUMANODENUMBER%
  • ความสามารถในการเปลี่ยนไดเรกทอรี จำกัด
    • ไม่ pushd/popd
    • cd /dไม่ ยังไม่มีcd path with spacesและcd "path with spaces"เนื่องจากขาดการสนับสนุนชื่อไฟล์ที่ยาว
  • ไม่ color
  • ไม่ forfiles
  • ไม่assoc(เนื่องจากไม่มี GUI และไฟล์ที่ต้องเปิดด้วยตนเองจากบรรทัดคำสั่งดังนั้นจึงไม่จำเป็นต้องเชื่อมโยงไฟล์)

คำสั่งภายนอกที่มีประโยชน์มากมายใน Windows เช่นตำแหน่งเรียงลำดับมากขึ้น (ในบางรุ่นของ DOS) ตัวเลือก ... จะหายไปใน DOS ด้วย


และนี่คือสิ่งที่ MS 'Rich Turner พูด

นอกจากนี้ Cmd! = MS-DOS!

ฉันยังต้องการชี้ให้เห็นถึงความเข้าใจผิดที่พบบ่อยซึ่งดำเนินการโดยบทความเช่นเดียวกับที่กล่าวข้างต้น: Cmd <> MS-DOS!

ในความเป็นจริง:

  • Microsoft ส่ง MS-DOS รุ่น "ใหม่" (v8.0 ใน Windows ME) ครั้งล่าสุดเมื่อวันที่ 16 กันยายน 2000 - 16 ปีที่ผ่านมา (ตามที่เขียนนี้) !!
  • MS-DOS เป็นระบบปฏิบัติการ (แม้ว่าระบบปฏิบัติการค่อนข้างง่ายตามมาตรฐานของวันนี้) ซึ่งส่วนติดต่อผู้ใช้หลักเป็นเชลล์บรรทัดคำสั่งจนกระทั่ง Windows 3.x & 9.x มาถึงและวิ่งบน / รอบ ๆ MS-DOS
  • ภาษาสคริปต์บรรทัดคำสั่งของ MS-DOS นั้นค่อนข้างสั้นและทรงพลังพอสมควร แต่ขาดคุณสมบัติที่สมบูรณ์ยิ่งขึ้นและคุณสมบัติขั้นสูงที่เราได้รับใน PowerShell, Bash และอื่น ๆ
  • ในขณะที่รุ่นต่อมาของ MS-DOS เติบโตขึ้นในความซับซ้อนและเพิ่ม / แทนที่การชุมนุมเก่าด้วยรหัสใหม่ที่เขียนใน 'C' ส่วนใหญ่ของ MS-DOS ส่วนใหญ่ยังคงเขียนในชุด x86 เพื่อประสิทธิภาพและเพราะมันเป็นวิธีเดียวในเวลาที่ เข้าถึงอุปกรณ์ฮาร์ดแวร์และอุปกรณ์ต่อพ่วงมากมาย สิ่งนี้ทำให้ MS-DOS ไม่สามารถพกพาได้กับซีพียูที่ไม่ใช่ x86 หากคุณเอียงมากคุณสามารถดาวน์โหลดซอร์สโค้ดสำหรับ MS-DOS v1.1 และ v2.0 เพื่อดูว่า MS-DOS รุ่นก่อนหน้านี้ถูกเขียนในชุดประกอบ x86 มากเท่าใด (คำแนะนำ: สวยมาก มัน)!

https://devblogs.microsoft.com/commandline/rumors-of-cmds-death-have-been-greatly-exaggerated/


อ่านเพิ่มเติม

โดยสรุปฟังก์ชั่นที่ชาญฉลาดพวกเขาอาจจะคล้ายกันเล็กน้อย แต่แตกต่างกันอย่างมาก


1
ว้าวนี่ดูเหมือนคำตอบที่ดีสำหรับCMD และพรอมต์คำสั่งใน windows ต่างกันอย่างไร ด้วย
SamB
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.