Sintaxe de redirecionamento de script em lote

4

Eu escrevi uma resposta um dia com um exemplo de script em lote e alguém apontou que é mais fácil ler a lógica ecoada em scripts em lote, quando você está redirecionando a saída para um arquivo, se você redirecionar para o arquivo primeiro e em seguida, coloque seu comando, texto, etc. (abaixo dos exemplos [1] ).

Esta sugestão não mencionou nenhum motivo para você não querer fazer isso, então comecei a investigar um pouco, já que estou sempre procurando métodos nativos para manter as coisas um pouco mais limpas.

Example Usual Way

IF EXIST "%tmpfile%" DEL /Q /F "%tmpfile%"
ECHO Some Text Here>>"%tmpfile%"
ECHO A little more text here>>"%tmpfile%"
ECHO Some other text over here man>>"%tmpfile%"
ECHO Can Scooby please have a Scooby snack>>"%tmpfile%"

Example Easier to Read Way

IF EXIST "%tmpfile%" DEL /Q /F "%tmpfile%"
ECHO>>"%tmpfile%" Some Text Here
ECHO>>"%tmpfile%" A little more text here
ECHO>>"%tmpfile%" Some other text over here man
ECHO>>"%tmpfile%" Can Scooby please have a Scooby snack

Obviamente, é muito mais fácil ler a lógica de scripts em lote com comandos ECHO neste formato, mas haveria uma preocupação se houvesse qualquer pegadinha usando esse método como um padrão em scripts em lote.

Eu dei uma olhada na Internet e o máximo que consegui encontrar foi a fonte referenciada abaixo dizendo não usar essa técnica em linhas de comando que também contêm outros redirecionamentos [2] .

Pergunta

Esta pergunta pode ser para especialistas em script em lote do Windows ou para alguém que tenha usado esse método por algum tempo ou que tenha feito testes rigorosos, mas. . .

  1. diferente do problema (vários redirecionamentos [2] ) para não usar essa sintaxe, há outros problemas, motivos ou pegadinhas que você deve considerar de antemão?

Referências

  • Redirection[1]

    • NOTES: (3)

      Redirections to one or more files tend to make batch files hard to read. Sometimes the lines can be padded with spaces to align all redirection signs and make the batch file more readable.

      However, if you were to do this with ECHO command lines, the spaces would really be ECHOed, which is not always convenient, to say the least.

      On Marc Stern's web site I found a great solution: just place the redirections before the actual commands.

      Take this imaginary batch file, for example:

      ECHO Directory of all files on C: >> LOG1.LOG

      DIR C:\ /S >> LOG1.LOG

      Not exactly easy on the eye, that one?

      How about this one, then?

      >> LOG1.LOG ECHO Directory of all files on C:

      >> LOG1.LOG DIR C:\ /S

      It will do exactly the same, no difference! Much better, isn't it? But now, try these:

      VER | TIME > LOG1.LOG > LOG1.LOG VER | TIME

      As you will notice, in the second line, it is the output of VER that gets redirected to LOG1.LOG !! As a rule of thumb: do not use this technique in command lines that also contain other redirections.

    source

por Pimp Juice IT 31.07.2016 / 03:40

1 resposta

5

Estou sempre procurando métodos nativos para manter as coisas um pouco mais limpas.

Aqui está outra alternativa, que (para mim) é ainda mais legível:

(
ECHO Some Text Here
ECHO A little more text here
ECHO Some other text over here man
ECHO Can Scooby please have a Scooby snack
)>>"%tmpfile%"

Também é mais fácil de manter, já que é muito mais fácil ativar / desativar o redirecionamento, se necessário, pois é feito em um só lugar.

    
por 31.07.2016 / 11:31