Qual é a diferença entre os arquivos .cmd e .bat?

17

Apenas curioso. Pessoas "legais" em nossa empresa sempre usam * .cmd enquanto ninguém foi capaz de explicar a diferença para mim.

    
por Artem Tikhomirov 02.06.2009 / 18:48

5 respostas

5

Aqui está uma boa discussão do Stackoverflow .

    
por 02.06.2009 / 18:54
7

Existem diferenças semânticas na linguagem de comando usada para cada uma delas ( .bat arquivos obtêm uma versão de compatibilidade). Algumas delas podem ser ilustradas por este script em aqui :

@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, .cmd arquivos obtêm a versão atual e mais sexy da linguagem de comandos do MS, e é por isso que as crianças legais os usam.

    
por 02.06.2009 / 18:53
3

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 'Windows NT Command Script' e é útil, pois usar uma extensão .cmd em vez de extensão .bat significa que as versões anteriores do Windows não sabe como executá-lo, para que eles não tentem e confundam os comandos dos arquivos de estilo do COMMAND.COM e não executem os novos comandos de estilo devido à falta de extensões de comando, resultando na execução parcial de scripts, o que pode ser comprovado danificar (por exemplo; falha ao verificar a cópia bem-sucedida de um arquivo e, em seguida, excluir o original de qualquer maneira).

A única diferença conhecida entre o processamento do arquivo .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 em arquivos .bat a variável ERRORLEVEL é alterada apenas em erros.

Espero que isso ajude.

    
por 02.06.2009 / 19:04
1

Em teoria, .cmd é mais "trueЪ" :) porque .bat é um script para o antigo command.com do DOS enquanto .cmd é para o cmd.exe do Windows NT, o último tem um pouco mais de script melhorado. Na vida real, normalmente ambos são iguais, como escrever / bin / sh ou / bin / bash no Linux (distribuições médias em que sh é realmente bash)

    
por 02.06.2009 / 18:53
0

Eu 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. Arquivos .bat foram introduzidos primeiro em DOS tipo OS's. Muita da sintaxe é semelhante, exceto quando você começa a entrar em funções avançadas. Além disso, um arquivo .cmd tem o potencial de não funcionar em um ambiente de 16 bits (win98), enquanto um arquivo .bat provavelmente funcionará em todos os ambientes.

    
por 02.06.2009 / 19:25