Apenas curioso. As pessoas "legais" em nossa empresa sempre usam * .cmd, enquanto ninguém foi capaz de explicar a diferença para mim.
Apenas curioso. As pessoas "legais" em nossa empresa sempre usam * .cmd, enquanto ninguém foi capaz de explicar a diferença para mim.
Respostas:
Aqui está uma boa discussão do Stackoverflow .
Existem diferenças semânticas na linguagem de comando usada para cada um (os .bat
arquivos obtêm uma versão de compatibilidade). Algumas delas podem ser ilustradas por este script daqui :
@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
Basicamente, os .cmd
arquivos obtêm a versão atual e mais sexy da linguagem de comando da MS, e é por isso que as crianças legais os usam.
De acordo com a Wikipedia:
.bat: a primeira extensão usada pela Microsoft para arquivos em lote. Essa extensão pode ser executada na maioria dos sistemas operacionais da Microsoft, incluindo o MS-DOS e a maioria das versões do Microsoft Windows.
.cmd: A extensão .cmd mais recente é descrita pelos sistemas baseados no Windows NT como um 'Script de Comando do Windows NT' e é útil, pois o uso de uma extensão .cmd em vez de uma extensão .bat significa que as versões anteriores do Windows não saberão como executá-lo, para que eles não tentem e confundam os comandos dos arquivos de estilo do COMMAND.COM e falhem ao executar os novos comandos de estilo devido à falta de extensões de comando, resultando em scripts sendo executados apenas parcialmente, o que pode ser prejudicial (por exemplo: falha ao verificar a cópia bem-sucedida de um arquivo e excluir o original de qualquer maneira).
A única diferença conhecida entre o processamento de arquivos .cmd e .bat é que, em um arquivo .cmd, a variável ERRORLEVEL é alterada mesmo em um comando bem-sucedido que é afetado pelas extensões de comando (quando as extensões de comando estão ativadas), enquanto que em arquivos .bat a variável ERRORLEVEL muda somente com erros.
Espero que isto ajude.
Em teoria, o .cmd é mais "verdadeiro" :) porque o .bat é um script para o antigo command.com do DOS, enquanto o .cmd é para o cmd.exe do Windows NT, o último possui um pouco mais de scripts aprimorados. Na vida real, geralmente ambos são iguais, como escrever / bin / sh ou / bin / bash no Linux (distros médios em que sh é realmente bash)
Vi pela primeira vez o formato .cmd usado no OS / 2. Se você está pensando em termos do DOS, é como um arquivo .bat em esteróides. Os arquivos .bat foram introduzidos primeiro nos SOs do tipo DOS. Muita sintaxe é semelhante, exceto quando você começa a entrar em funções avançadas. Além disso, um arquivo .cmd pode não funcionar em um ambiente de 16 bits (win98), enquanto um arquivo .bat provavelmente funcionará em todos os ambientes.