Qual é a diferença de usar bat e cmd?

0

Eu tentei o Google, mas talvez o mojo do Google seja ruim, já que não encontrei uma explicação adequada

Eu tenho um arquivo em lotes que para e inicia alguns serviços. Este arquivo de lote é então agendado no agendador de tarefas usando uma conta de serviço.

Se eu alterar a extensão de .bat para .cmd, o script falhará, pois o usuário não parece ter o direito de interromper e iniciar um serviço.

Mas por que isso muda o comportamento apenas alterando a extensão do script?

    
por Verakso 05.04.2017 / 09:53

1 resposta

1

Qual é a diferença do uso de bat e cmd?

BAT was created to interact with COMMAND.COM, the command interpreter of DOS. Microsoft adopted most of the DOS commands into their new interpreter named CMD. EXE. CMD was created to interface with CMD.EXE and it breaks compatibility with COMMAND.COM. Another key difference is in how they handle the errorlevel variable. When using BAT, this variable is only changed once an actual error occurs and no change in state occurs when the each command executes successfully. This is not true for CMD as the errorlevel variable would still change state even if no errors occur. Programmers should take note of this when creating elaborate scripts as it may cause a little bit of confusion.

Aside from those minor differences, CMD and BAT are identical to each other. Most users who create simple scripts to clear or transfer files around should not encounter any problem. For users of the more recent versions of Windows, BAT and CMD are pretty much interchangeable as CMD.EXE would interpret and execute the commands in both files. Although most users are aware of this fact, a lot of the older people who had a chance to work with DOS and its batch files still use the BAT extension; simply out of habit and familiarity.

Summary:

1. The BAT extension is used by DOS and Windows while the CMD extension is for Windows NT Command Scripts

2. The BAT extension can be interpreted by COMMAND.COM and CMD.EXE while the CMD extension can only be interpreted by CMD.EXE

3. The errorlevel always changes state in CMD but only on errors in BAT

     

fonte

Se eu alterar a extensão de .bat para .cmd, o script falhará

Para fornecer uma resposta precisa sobre essa parte da sua pergunta, a lógica que você está usando precisa ser divulgada para entender o que ela está fazendo para ajudar na solução de problemas.

Caso contrário, presumo que a falha que você está vendo tem a ver com a forma como os scripts .CMD lidam com diferenças de nível de erro ou talvez com alguma Política de Grupo ou outras restrições que afetam a interpretação por CMD.exe e não quando executadas e interpretadas por COMMAND.COM .

Mais recursos

por 05.04.2017 / 17:52