Просто цікаво. "Класні" люди в нашій компанії завжди використовують * .cmd, поки мені ніхто не зміг пояснити різницю.
Просто цікаво. "Класні" люди в нашій компанії завжди використовують * .cmd, поки мені ніхто не зміг пояснити різницю.
Відповіді:
Існують смислові відмінності в мові команд, що використовується для кожного ( .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, тому класні діти використовують їх.
За даними Вікіпедії:
.bat: Перше розширення, яке використовує Microsoft для пакетних файлів. Це розширення може бути запущено в більшості операційних систем Microsoft, включаючи MS-DOS та більшості версій Microsoft Windows.
.cmd: Більше нове розширення .cmd описується системами на базі Windows NT як "Сценарій команд Windows NT" і корисно, оскільки використання розширення .cmd, а не розширення .bat означає, що більш ранні версії Windows не знають, як це зробити запустіть його, щоб вони не намагалися помилитися командами для файлів стилів COMMAND.COM і не запустили команди нового стилю через відсутність розширень команд, в результаті чого сценарії виконуються лише частково, що може виявити шкоду (для Наприклад, не вдалося перевірити успішне копіювання файлу, а потім все-таки видалити оригінал).
Єдина відома відмінність між .cmd і .bat-обробкою файлів полягає в тому, що у .cmd-файлі змінна ERRORLEVEL змінюється навіть у успішній команді, на яку впливає розширення команд (коли розширення команд увімкнено), тоді як у .bat-файлах змінна ERRORLEVEL змінюється лише при помилках.
Сподіваюся, це допомагає.
Теоретично .cmd є "вірніше" :), тому що .bat - це сценарій для старого DOS command.com, тоді як .cmd призначений для cmd.exe з Windows NT, останній має трохи вдосконалений сценарій. У реальному житті зазвичай обидва рівні, як написання / bin / sh або / bin / bash в Linux (середні дистрибутиви, де sh насправді баш)
Я вперше побачив формат .cmd, що використовується в OS / 2. Якщо ви думаєте в термінах DOS, це як файл .bat на стероїдах. .bat файли були введені спочатку під ОС DOS типу. Багато синтаксису схоже за винятком випадків, коли ви починаєте вступати в розширені функції. Також .cmd файл може не працювати в 16-бітному середовищі (win98), тоді як .bat файл, ймовірно, працює у будь-яких середовищах.