Solo curioso. Le persone "simpatiche" nella nostra azienda usano sempre * .cmd mentre nessuno è stato in grado di spiegarmi la differenza.
Solo curioso. Le persone "simpatiche" nella nostra azienda usano sempre * .cmd mentre nessuno è stato in grado di spiegarmi la differenza.
Risposte:
Ecco una buona discussione da StackOverflow .
Esistono differenze semantiche nel linguaggio di comando utilizzato per ciascuno (i .bat
file ottengono una versione di compatibilità). Alcuni di questi possono essere illustrati da questo script da qui :
@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
Fondamentalmente, i .cmd
file ottengono la versione attuale e più sexy del linguaggio di comando MS, motivo per cui i ragazzi fighi li usano.
Secondo Wikipedia:
.bat: la prima estensione utilizzata da Microsoft per i file batch. Questa estensione può essere eseguita nella maggior parte dei sistemi operativi Microsoft, inclusi MS-DOS e la maggior parte delle versioni di Microsoft Windows.
.cmd: la nuova estensione .cmd è descritta dai sistemi basati su Windows NT come uno "Script di comando di Windows NT" ed è utile, poiché l'utilizzo di un'estensione .cmd anziché estensione .bat significa che le versioni precedenti di Windows non sapranno come eseguirlo, in modo che non provino a scambiare i comandi per i file di stile COMMAND.COM e non riescano a eseguire i nuovi comandi di stile a causa della mancanza di estensioni di comando, con la conseguenza che gli script vengano eseguiti solo parzialmente e potrebbero risultare dannosi (per esempio: mancato controllo della corretta copia di un file e cancellazione comunque dell'originale).
L'unica differenza nota tra l'elaborazione dei file .cmd e .bat è che in un file .cmd la variabile ERRORLEVEL cambia anche su un comando riuscito influenzato dalle estensioni di comando (quando le estensioni di comando sono abilitate), mentre nei file .bat la variabile ERRORLEVEL cambia solo in caso di errori.
Spero che sia di aiuto.
In teoria .cmd è più "vero" :) perché .bat è uno script per il vecchio command.com DOS di DOS, mentre .cmd è per cmd.exe da Windows NT, l'ultimo ha uno scripting leggermente più migliorato. Nella vita reale di solito entrambi sono uguali, come scrivere / bin / sh o / bin / bash in Linux (distribuzioni medie in cui sh è in realtà bash)
Ho visto per la prima volta il formato .cmd utilizzato in OS / 2. Se stai pensando in termini di DOS, è come un file .bat sugli steroidi. I file .bat sono stati introdotti prima nei SO di tipo DOS. Molta sintassi è simile tranne quando si inizia ad accedere a funzioni avanzate. Inoltre, un file .cmd potrebbe non funzionare in un ambiente a 16 bit (win98) mentre un file .bat funzionerà probabilmente in tutti gli ambienti.