Eu tenho um arquivo em lotes que executa vários scripts python que fazem modificações na tabela.
Quero que os usuários comentem os scripts python 1-2 que eles não desejam executar, em vez de removê-los do arquivo em lotes (para que o próximo usuário saiba que esses scripts existem como opções!)
Também quero adicionar comentários para chamar a atenção deles especificamente para as variáveis que eles precisam atualizar no arquivo em lotes antes de executá-lo. Vejo que posso usar
REM
. Mas parece que isso é mais para atualizar o usuário com progresso depois de executá-lo.
Existe uma sintaxe para adicionar um comentário de maneira mais apropriada?
batch-file
cmd
comments
comment-conventions
user1397044
fonte
fonte
Rem Sth
comando ou usar esta marca::: Sth
Respostas:
O
rem
comando é de fato para comentários. Ele não atualiza inerentemente ninguém depois de executar o script. Alguns autores de scripts podem usá-lo dessa maneira em vez deecho
, porque, por padrão, o interpretador de lote imprime cada comando antes de ser processado. Como osrem
comandos não fazem nada, é seguro imprimi-los sem efeitos colaterais. Para evitar a impressão de um comando, prefixe-o com@
, ou, para aplicar essa configuração ao longo do programa, execute@echo off
. (Éecho off
para evitar a impressão de mais comandos;@
é para evitar a impressão desse comando antes que a configuração de eco entre em vigor.)Portanto, no seu arquivo em lotes, você pode usar o seguinte:
fonte
REM This whole line is a comment
@echo off :: This comment is inline
#
comentários porque#
, evidentemente, pode não ser um designador de comentário válido em todos os shells que o Configure deve suportar; veja a linha 3.Use
::
ouREM
MAS (como as pessoas observaram):
&
caracteres:your commands here & :: commenttttttttttt
IF/ELSE
,FOR
loops, etc ...) é usadaREM
porque::
gera um erro.::
pode falhar dentrosetlocal ENABLEDELAYEDEXPANSION
fonte
cd "C:\Folder" ::this throws a syntax error
git add :: blah this is not a comment
com "fatal: pathspec 'blah' não corresponde a nenhum arquivo"&
entre o código e o comentário::
. Para ilustrar, aberta cmd rápida e corridadir ::blah
que não listar o conteúdo de.
e comparar comdir & ::blah
, o que faz::
scripts de bug comsetlocal ENABLEDELAYEDEXPANSION
efor
Não, arquivos em lote antigos simples são usados
REM
como comentário.ECHO
é o comando que imprime algo na tela.Para "comentar" seções do arquivo que você pode usar
GOTO
. Um exemplo de todos esses comandos / técnicas:O que posso dizer? os arquivos em lote são uma relíquia dos tempos antigos, são desajeitados e feios.
Você pode ler mais neste site .
EDIT: modificou um pouco o exemplo para que ele contenha os elementos que você aparentemente está procurando.
fonte
O :: em vez do REM foi usado preferencialmente nos dias em que os computadores não eram muito rápidos. As linhas REM são lidas e depois ignoradas. As linhas :: 'ed são ignoradas por todo o caminho. Isso pode acelerar o seu código nos "velhos tempos". Ainda mais depois de um REM, você precisa de um espaço, depois de :: você não precisa.
E como dito no primeiro comentário: você pode adicionar informações a qualquer linha que achar necessário
Quanto ao salto de peças. Colocar o REM na frente de cada linha pode consumir bastante tempo. Como mencionado, usar o GOTO para ignorar partes é uma maneira fácil de ignorar grandes partes de código. Certifique-se de definir um: LABEL no ponto em que deseja que o código continue.
fonte
::
erem
igualmente.\n
e, em seguida, começa a analisar novamente [carece de fontes?]Comentários em várias linhas
Se houver um grande número de linhas que você deseja comentar, será melhor se você puder fazer comentários com várias linhas em vez de comentar todas as linhas.
Veja este post de Rob van der Woude nos blocos de comentários :
fonte
if
vez degoto
stackoverflow.com/q/9074476/995714 ss64.com/vb/syntax-hybrid.html stackoverflow.com/a/34512715/995714Colocando comentários na mesma linha com os comandos: use
& :: comment
Explicação:
&
separa dois comandos , portanto, neste caso,color C
é o primeiro comando e:: set red font color
o segundo.Importante:
Esta declaração com comentário parece intuitivamente correta:
mas não é um uso válido do comentário. Funciona apenas porque
goto
ignora todos os argumentos anteriores ao primeiro. A prova é fácil, issogoto
também não falhará:Mas tentativa semelhante
falha de executar o comando devido a 4 argumentos desconhecido para o
color
comando:::
,grey
,on
,blue
.Funcionará apenas como:
Portanto, o e comercial é inevitável.
fonte
Você pode comentar algo usando
::
ouREM
:ou
Para fazer isso na mesma linha que um comando, você deve adicionar um e comercial:
ou
Nota:
::
na lógica aninhada (IF-ELSE
,FOR
loops, etc ...) causará um erro. Nesses casos, use emREM
vez disso.fonte
@Rado
foi incorporada na resposta que o tempo e obrigado por isso, apenas eu preferia um outro estilo para resposta e usados estilo diferente.Este é um tópico antigo e gostaria de adicionar meu entendimento aqui para expandir o conhecimento deste tópico interessante.
A principal diferença entre REM e :: é:
REM é um comando em si, enquanto :: não é.
Podemos tratar :: como um token que, assim que o analisador CMD encontrar o primeiro espaço não em branco de uma linha, é este :: token, ele simplesmente ignorará a linha inteira e lerá a próxima linha. É por isso que o REM deve ser seguido por pelo menos um espaço em branco para poder funcionar como um comentário para a linha, enquanto :: não precisa de nenhum espaço em branco atrás dela.
Que REM é um comando em si pode ser melhor entendido a partir da seguinte sintaxe FOR
A sintaxe básica do FOR é a seguinte
aqui
<Command>
pode haver qualquer comando válido. Assim, podemos escrever a seguinte linha de comando válida, comorem
é um comandoNo entanto, NÃO PODEMOS escrever a seguinte linha, pois isso
::
não é um comandofonte
::
é uma etiqueta (inválida) (o que explica seu comportamento) e por isso não deve ser utilizado (embora ainda é bastante comum)Você pode adicionar comentários ao final de um arquivo em lotes com esta sintaxe:
Apenas certifique-se de nunca usar parênteses de fechamento.
Atribuições: Leo Guttirez Ramirez em https://www.robvanderwoude.com/comments.php
fonte