Tengo un archivo por lotes que ejecuta varios scripts de Python que realizan modificaciones en la tabla.
Quiero que los usuarios comenten los scripts de Python 1-2 que no quieren ejecutar, en lugar de eliminarlos del archivo por lotes (¡para que el siguiente usuario sepa que estos scripts existen como opciones!)
También quiero agregar comentarios para llamar su atención específicamente sobre las variables que necesitan actualizar en el archivo Batch antes de ejecutarlo. Veo que puedo usar
REM
. Pero parece que eso es más para actualizar al usuario con progreso después de que lo haya ejecutado.
¿Existe una sintaxis para agregar un comentario más apropiadamente?
batch-file
cmd
comments
comment-conventions
usuario1397044
fuente
fuente
Rem Sth
Command o Use esta marca::: Sth
Respuestas:
El
rem
comando es de hecho para comentarios. No actualiza inherentemente a nadie después de ejecutar el script. Sinecho
embargo, algunos autores de scripts pueden usarlo de esa manera en lugar de hacerlo , porque de forma predeterminada el intérprete por lotes imprimirá cada comando antes de procesarlo. Como losrem
comandos no hacen nada, es seguro imprimirlos sin efectos secundarios. Para evitar imprimir un comando, agregue el prefijo@
o, para aplicar esa configuración en todo el programa, ejecute@echo off
. (Esecho off
para evitar imprimir más comandos;@
es para evitar imprimir ese comando antes de que la configuración de eco tenga efecto).Entonces, en su archivo por lotes, puede usar esto:
fuente
REM This whole line is a comment
@echo off :: This comment is inline
#
comentarios porque#
, evidentemente, podría no ser un designador de comentarios válido en todos los shells que Configure está destinado a admitir; ver línea 3.Use
::
oREM
PERO (como la gente señaló):
&
carácter:your commands here & :: commenttttttttttt
IF/ELSE
,FOR
bucles, etc.) se usaREM
porque::
da un error.::
puede fallar dentrosetlocal ENABLEDELAYEDEXPANSION
fuente
cd "C:\Folder" ::this throws a syntax error
git add :: blah this is not a comment
con "fatal: pathpec 'blah' no coincide con ningún archivo"&
entre el código y el comentario::
. Para ilustrar, abra cmd prompt y ejecutedir ::blah
lo que no enumera el contenido.
y lo compara con lodir & ::blah
que sí lo hace::
scripts de errores consetlocal ENABLEDELAYEDEXPANSION
yfor
No, los archivos por lotes antiguos simples se usan
REM
como comentario.ECHO
es el comando que imprime algo en la pantalla.Para "comentar" secciones del archivo que podría usar
GOTO
. Un ejemplo de todos estos comandos / técnicas:¿Qué puedo decir? Los archivos por lotes son una reliquia de tiempos pasados, son torpes y feos.
Puedes leer más en este sitio web .
EDITAR: modificó un poco el ejemplo para que contenga los elementos que aparentemente está buscando.
fuente
El :: en lugar de REM se usaba preferiblemente en los días en que las computadoras no eran muy rápidas. La línea REM'ed se lee y luego se ignora. :: 'línea ed se ignoran todo el camino. Esto podría acelerar su código en "los viejos tiempos". Además, después de un REM necesitas un espacio, después de :: no lo necesitas.
Y como se dijo en el primer comentario: puede agregar información a cualquier línea que sienta la necesidad de
En cuanto al salto de piezas. Poner REM delante de cada línea puede llevar bastante tiempo. Como se mencionó, usar GOTO para omitir partes es una manera fácil de omitir grandes piezas de código. Asegúrese de establecer un: LABEL en el punto donde desea que continúe el código.
fuente
::
erem
igualmente.\n
y luego comienza a analizar nuevamente [cita requerida]Comentarios de varias líneas
Si hay un gran número de líneas que desea comentar, será mejor si puede hacer comentarios de varias líneas en lugar de comentar cada línea.
Vea esta publicación de Rob van der Woude en bloques de comentarios :
fuente
if
lugar degoto
stackoverflow.com/q/9074476/995714 ss64.com/vb/syntax-hybrid.html stackoverflow.com/a/34512715/995714Poner comentarios en la misma línea con los comandos: use
& :: comment
Explicación:
&
separa dos comandos , por lo que en este casocolor C
es el primer comando y:: set red font color
es el segundo.Importante:
Esta declaración con comentario parece intuitivamente correcta:
pero no es un uso válido del comentario. Funciona solo porque
goto
ignora todos los argumentos más allá del primero. La prueba es fácil, estogoto
tampoco fallará:Pero intento similar
falla la ejecución del comando debido a 4 argumentos desconocidos para el
color
comando:::
,grey
,on
,blue
.Solo funcionará como:
Entonces, el signo y es inevitable.
fuente
Puedes comentar algo usando
::
oREM
:o
Para hacerlo en la misma línea que un comando, debe agregar un ampersand:
o
Nota:
::
en lógica anidada (IF-ELSE
,FOR
bucles, etc.) causará un error. En esos casos, useREM
en su lugar.fuente
@Rado
se fusionó en la respuesta en ese momento y gracias por eso, simplemente preferí otro estilo para la respuesta y usé un estilo diferente.Este es un tema antiguo y me gustaría agregar mi comprensión aquí para ampliar el conocimiento de este interesante tema.
La diferencia clave entre REM y :: es:
REM es un comando en sí mismo, mientras que :: NO lo es.
Podemos tratar :: como un token que tan pronto como el analizador CMD encuentre el primer espacio no en blanco en una línea es este :: token, simplemente saltará toda la línea y leerá la siguiente línea. Es por eso que REM debe ir seguido de al menos un espacio en blanco para poder funcionar como un comentario para la línea, mientras que :: no necesita ningún espacio en blanco detrás de ella.
Que REM es un comando en sí mismo puede entenderse mejor a partir de la siguiente sintaxis FOR
La sintaxis básica de FOR es la siguiente
aquí
<Command>
puede haber cualquier comando válido Para que podamos escribir la siguiente línea de comando válida comorem
es un comandoSin embargo, NO PODEMOS escribir la siguiente línea ya
::
que no es un comandofuente
::
es una etiqueta (no válida) (que explica su comportamiento) y, por lo tanto, no debe usarse (aunque todavía es bastante común)Puede agregar comentarios al final de un archivo por lotes con esta sintaxis:
Solo asegúrate de nunca usar paréntesis de cierre.
Atribuciones: Leo Guttirez Ramirez en https://www.robvanderwoude.com/comments.php
fuente