Eu escrevi um arquivo Batch enorme do MS DOS. Para testar este arquivo em lote, preciso executar apenas algumas linhas e quero ocultar / comentar o restante.
Eu tenho algumas linhas de comentários começando com, ::
portanto, não posso usar ::
mais, pois isso embaralhará todos os comentários.
Como posso resolver esse problema?
batch-file
comments
dos
user219628
fonte
fonte
REM
linhas como linhas de comentário, isso torna a saída obscuraSe desejar adicionar REM no início de cada linha em vez de usar GOTO, você pode usar o Notepad ++ para fazer isso facilmente seguindo estas etapas:
Repita as etapas para descomentar
fonte
Ctrl-Q
, clique emNotepad++
:Edit -> Comment/Uncomment
.Embora a
goto
solução seja uma boa opção, ela não funcionará entre colchetes (incluindo os comandos FOR e IF). Mas funcionará. No entanto, você deve ter cuidado ao fechar colchetes e sintaxe inválida para comandosFOR
eIF
porque eles serão analisados.Atualizar
A atualização na resposta do dbenham me deu algumas idéias. Primeiro - há dois casos diferentes em que podemos precisar de comentários de várias linhas - em um contexto de colchetes onde GOTO não pode ser usado e fora dele. Dentro de colchetes de contexto, pode usar outro parêntesis, se há uma condição que impede que o código a ser executed.Though o Thede código ainda será analisado e alguns erros de sintaxe será detectado (
FOR
,IF
, suportes indevidamente fechadas, expansão de parâmetros errado ..). Assim, se for possível, é melhor usar GOTO.Embora não seja possível criar uma macro / variável usada como um rótulo - mas é possível usar macros para comentários de colchetes. Ainda assim, dois truques podem ser usados para tornar os comentários GOTO mais simétricos e mais agradáveis (pelo menos para mim). Para isso, usarei dois truques - 1) você pode colocar um único símbolo na frente de uma etiqueta e goto ainda será capaz de encontrá-lo (não tenho ideia do motivo disso. Meu palpite é que ele está procurando uma unidade). 2) você pode colocar um único
:
no final de um nome de variável e um recurso de substituição / subtração não será acionado (mesmo em extensões habilitadas). O que combinado com as macros para comentários de colchetes pode fazer com que os dois casos pareçam quase iguais.Então, aqui estão os exemplos (na ordem em que mais gosto):
Com colchetes retangulares :
Com chaves :
Com parênteses :
Mistura entre os estilos PowerShell e C (
<
não pode ser usado porque o redirecionamento é com prio superior.*
Não pode ser usado por causa do%*
):Para enfatizar que é um comentário (embora não seja tão curto):
fonte
rem.||(
ou emrem^ (
vez disso. A intenção é um pouco mais clara. Veja minha resposta atualizada.%rem:%
+%:rem%
também para torná-lo mais óbvio, embora ele perca seu charme.Ou apenas barra para ficar mais perto do estilo C ...Outra opção é colocar as linhas indesejadas em um bloco IF que nunca pode ser verdadeiro
É claro que nada dentro do bloco if será executado, mas será analisado. Portanto, você não pode ter nenhuma sintaxe inválida dentro. Além disso, o comentário não pode conter, a
)
menos que seja escapado ou entre aspas. Por essas razões, a solução GOTO aceita é mais confiável. (A solução GOTO também pode ser mais rápida)Atualização 19/09/2017
Aqui está uma melhoria cosmética para a solução GOTO da pdub . Eu defino uma variável de ambiente simples "macro" que torna a sintaxe do comentário GOTO um pouco melhor autodocumentada. Embora seja geralmente recomendado que: os rótulos sejam exclusivos em um script de lote, realmente não há problema em incorporar vários comentários como esse no mesmo script de lote.
Ou você pode usar uma dessas variantes da solução de npocmaka . O uso de REM em vez de BREAK torna a intenção um pouco mais clara.
fonte
Só quero mencionar que a solução GOTO do pdub não é totalmente correta no caso: o rótulo do comentário aparecer várias vezes. Eu modifico o código desta questão como exemplo.
A saída será
O comando ECHO HERE AT TD_NEXT NO PRIMEIRO BLOCO é ignorado.
fonte
@jeb
E depois de usar isso, o stderr parece estar inacessível
Não, tente isto:
Mas porque funciona?
desculpe, eu respondo a pergunta em frensh:
(la redirection par 3> est spécial car elle persiste, on va l'utiliser pour capturer le flux des erreurs 2> est on va le transformador en un flux persistant à l'ade de 3> ceci va nous permettre d'avoir une gestion des erreur pour tout notre Environment de script..par la suite si on veux recuperer le flux 'stderr' il faut faire une autre redirection du handle 2> au handle 1> qui n'est autre que la console ..)
fonte
tente isto:
fonte