Traço ou barra no arquivo de lote?

6

Parece que um traço - ou uma barra / funciona igualmente bem em um arquivo de lote. Os dois exemplos abaixo são igualmente válidos. Qual é correto? Depende do sistema operacional? Se sim, como determino qual usar?

 shutdown -r -m \server04 -t 01 -f 
 shutdown /r /m \server04 /t 01 /f 

Meu objetivo é escrever um arquivo em lotes que vai chegar a vários servidores do Windows e reiniciá-los. O resultado final também pode fornecer ping em servidores e permitir opções fornecidas pelo usuário em quais servidores serão reinicializados. Mas minha pergunta pretende definir como melhor formatar o código.

Eu encontrei esta pergunta relacionada no SO, que não realmente fornecer uma resposta quando usar um ou outro. A questão tem muita negatividade por não estar no Superusuário. A maioria das opiniões sugeriu que eles usaram traço, mas nenhuma justificativa sólida é dada para o uso de um sobre o outro.

    
por James Jenkins 25.04.2014 / 15:26

3 respostas

18

Oficialmente / tradicionalmente no DOS / Windows, o comutador de linha de comando é representado por uma barra invertida ( / ).

Oficialmente / tradicionalmente em praticamente todos os outros sistemas operacionais (por exemplo: * nix flavors) eles usam um traço ( - ).

Esta é uma das diferenças fundamentais entre o modo como os sistemas operacionais são projetados e utilizados.

Outro (relacionado), por exemplo, como Daniel B aponta em seu comentário, uma barra em * nix é para separadores de caminho de arquivo, onde - como DOS / Windows usa barras invertidas - outra diferença fundamental, que permite ao MS (continue a) use a barra como o caractere de troca.

Mas cabe ao programador implementar a forma como eles escolhem, e os programadores de aplicativos DOS / Windows (incluindo aqueles que trabalham no MS) geralmente incluem a capacidade de usar ambos, para facilitar o uso por pessoas vindas de outros sistemas, e Tenho certeza que muitas vezes devido à preferência pessoal.

Programadores fora do MS, às vezes, omitem permissão para o uso da barra.

Boa sinopse:

It’s hard to imagine today, but the original version of Microsoft DOS — that’s MS-DOS 1.0 — didn’t support directories at all when it was released in 1981. Most of the utilities included with DOS were written by IBM, and they used the / character as a “switch” character

...

The different types of slashes here indicate whether you’re specifying an option or a directory path.

Fonte do Blurb: Por que o Windows usa barras invertidas e Tudo o mais usa barras para a frente

    
por 25.04.2014 / 15:37
0

Você deve usar / para o Windows e - para o Unix. E não se esqueça de que os parâmetros dos mesmos comandos podem e serão diferentes no sistema Windows e no sistema Unix.

    
por 25.04.2014 / 21:49
0

Não há comandos no Windows que usam apenas traço. Mesmo arp pode usar barra.

Comandos que podem usar traço são baseados em comandos * nix, por exemplo arp ou desligamento.

Com o desligamento, a ajuda do cmd depende da versão do Windows! No XP ajuda cmd mostra desligamento -? No Win7 mostra shutdown / ?. A ajuda da Web do MS mostra com um traço. Mas a versão do windows também aceita.

Com o arp, o cmd ajuda no XP e no 7 e na ajuda da Web, mostre-o com traço. Mas eles podem aceitar barra.

Eu não acho que o MS já reescreveu um comando que levou traços, para aceitar apenas a barra. E a ideia que você mencionou nos comentários é que você está preocupado que uma implementação possa diferir de outra usando - vs / Eu não penso assim. Você se esforçaria para encontrar algum exemplo disso, duvido que isso tenha acontecido. Microsoft simplesmente não faz isso!

Se um traço funciona em uma versão do windows para um comando, ficaria surpreso se não funcionasse em outro (para esse comando). Se você já ouviu falar disso, por exemplo você vê um exemplo disso, então você poderia começar a se preocupar com como saber qual usar para ser compatível com as versões do Windows. Embora até então você poderia ir com barra porque todos eles parecem aceitar isso.

    
por 25.04.2014 / 16:51