แค่สงสัย. คน "เจ๋ง" ใน บริษัท ของเราใช้ * .cmd เสมอในขณะที่ไม่มีใครสามารถอธิบายความแตกต่างให้ฉันได้
แค่สงสัย. คน "เจ๋ง" ใน บริษัท ของเราใช้ * .cmd เสมอในขณะที่ไม่มีใครสามารถอธิบายความแตกต่างให้ฉันได้
คำตอบ:
นี่คือการอภิปรายที่ดีจาก Stackoverflow
มีความแตกต่างทางความหมายในภาษาคำสั่งที่ใช้สำหรับแต่ละ.bat
ไฟล์ บางส่วนของสิ่งเหล่านี้สามารถแสดงโดยสคริปต์นี้จากที่นี่ :
@echo off&setlocal ENABLEEXTENSIONS
call :func&&echo/I'm a cmd||echo/I'm a bat
goto :EOF
:func
md;2>nul
set var=1
โดยพื้นฐานแล้ว.cmd
ไฟล์ต่างๆจะได้รับภาษาคำสั่ง MS เวอร์ชันที่เซ็กซี่กว่าซึ่งเป็นเหตุผลว่าทำไมเด็กที่น่าสนใจจึงใช้มัน
ตามที่ Wikipedia:
.bat: นามสกุลแรกที่ Microsoft ใช้สำหรับไฟล์แบตช์ ส่วนขยายนี้สามารถเรียกใช้ในระบบปฏิบัติการ Microsoft ส่วนใหญ่รวมถึง MS-DOS และ Microsoft Windows รุ่นส่วนใหญ่
.cmd: นามสกุล. cmd ที่ใหม่กว่านั้นอธิบายโดยระบบที่ใช้ Windows NT เป็น 'สคริปต์คำสั่งของ Windows NT' และมีประโยชน์เช่นเดียวกับการใช้ส่วนขยาย. cmd แทนที่จะเป็น. bat ส่วนขยายหมายความว่า Windows รุ่นก่อนหน้าไม่ทราบวิธีการ เรียกใช้เพื่อไม่ให้พยายามและเข้าใจผิดกับคำสั่งสำหรับไฟล์สไตล์ COMMAND.COM และไม่สามารถเรียกใช้คำสั่งสไตล์ใหม่เนื่องจากการขาดส่วนขยายคำสั่งส่งผลให้สคริปต์ทำงานเพียงบางส่วนเท่านั้นซึ่งสามารถพิสูจน์ความเสียหายได้ (สำหรับ ตัวอย่างไม่สามารถตรวจสอบการคัดลอกไฟล์ได้สำเร็จจากนั้นจึงลบต้นฉบับต่อไป)
ความแตกต่างที่ทราบกันเพียงอย่างเดียวระหว่างการประมวลผลไฟล์. cmd และ. bat คือในไฟล์. cmd ตัวแปร ERRORLEVEL จะเปลี่ยนไปแม้กระทั่งในคำสั่งที่ประสบความสำเร็จที่ได้รับผลกระทบจากส่วนขยายคำสั่ง (เมื่อเปิดใช้งานส่วนขยายคำสั่ง) เปลี่ยนเฉพาะเมื่อเกิดข้อผิดพลาด
หวังว่านี่จะช่วยได้
ในทางทฤษฎี. cmd นั้นเป็น "trueЪ" มากขึ้น :) เนื่องจาก. bat เป็นสคริปต์สำหรับ DOS command.com เก่าในขณะที่. cmd ใช้สำหรับ cmd.exe จาก Windows NT คนสุดท้ายมีการปรับปรุงสคริปต์เล็กน้อย ในชีวิตจริงมักจะมีค่าเท่ากันเช่นการเขียน / bin / sh หรือ / bin / bash ใน Linux (หมายถึง distros ที่ sh คือ bash จริง)
ฉันเห็นรูปแบบ. cmd ครั้งแรกที่ใช้ใน OS / 2 หากคุณกำลังคิดในแง่ของ DOS มันก็เหมือนกับไฟล์. bat บนเตียรอยด์ ไฟล์. bat ถูกนำมาใช้เป็นครั้งแรกภายใต้ระบบปฏิบัติการ DOS type ไวยากรณ์มีจำนวนมากคล้ายกันยกเว้นเมื่อคุณเริ่มเข้าสู่ฟังก์ชั่นขั้นสูง นอกจากนี้ไฟล์. cmd ยังมีโอกาสที่จะไม่ทำงานในสภาพแวดล้อมแบบ 16 บิต (win98) ในขณะที่ไฟล์. bat อาจทำงานได้ในทุกสภาพแวดล้อม