batch-file - script - variables in bat file
¿Cómo “comentar”(agregar comentario) en un lote/cmd? (7)
Tengo un archivo por lotes que ejecuta varios scripts de Python que hacen modificaciones a la tabla.
Quiero que los usuarios comenten los 1-2 scripts de python que no desean ejecutar, en lugar de eliminarlos del archivo por lotes (¡así que el próximo usuario sabe 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 de Lote antes de ejecutarlo. Veo que puedo usar
REM
. Pero parece que eso es más para actualizar al usuario con el progreso después de haberlo ejecutado.
¿Hay una sintaxis para agregar más apropiadamente un comentario?
Comentarios multilínea
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.
El lenguaje por lotes no tiene bloques de comentarios, aunque hay formas de lograr el efecto.
GOTO EndComment1
This line is comment.
And so is this line.
And this one...
:EndComment1
Puede usar la etiqueta GOTO
y: Etiqueta para hacer comentarios de bloque.
O bien, si el bloque de comentarios aparece al final del archivo por lotes, puede escribir EXIT
al final del código y luego cualquier número de comentarios para su comprensión.
@ECHO OFF
REM Do something
•
•
REM End of code; use GOTO:EOF instead of EXIT for Windows NT and later
EXIT
Start of comment block at end of batch file
This line is comment.
And so is this line.
And this one...
Poniendo comentarios en la misma línea con comandos: use & :: comment
color C & :: set red font color
echo IMPORTANT INFORMATION
color & :: reset the color to default
Explicación:
&
separa dos comandos , por lo que en este caso el color C
es el primer comando y :: set red font color
es el segundo.
Importante:
Esta afirmación con comentario parece intuitivamente correcta:
goto error1 :: handling the error
pero no es un uso válido del comentario. Funciona solo porque goto
ignora todos los argumentos pasados el primero. La prueba es fácil, este goto
tampoco fallará:
goto error1 handling the error
Pero intento similar
color 17 :: grey on blue
falla al ejecutar el comando debido a 4 argumentos desconocidos para el comando de color
: ::
, grey
, on
, blue
.
Solo funcionará como:
color 17 & :: grey on blue
Así que el signo es inevitable.
El :: en lugar de REM se usó preferiblemente en los días en que las computadoras no eran muy rápidas. Las líneas REM''ed se leen y luego se ingnoran. :: La línea ed se ignora en todo momento. Esto podría acelerar su código en "los viejos tiempos". Más aún después de un REM necesitas un espacio, después de: no.
Y como se dijo en el primer comentario: puede agregar información a cualquier línea que sienta la necesidad de
SET DATETIME=%DTS:~0,8%-%DTS:~8,6% ::Makes YYYYMMDD-HHMMSS
En cuanto a la omisión 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 una: ETIQUETA en el punto donde desea que continúe el código.
SOME CODE
GOTO LABEL ::REM OUT THIS LINE TO EXECUTE THE CODE BETWEEN THIS GOTO AND :LABEL
SOME CODE TO SKIP
.
LAST LINE OF CODE TO SKIP
:LABEL
CODE TO EXECUTE
El comando rem
es de hecho para comentarios. No actualiza intrínsecamente a nadie después de ejecutar el script. Sin embargo, algunos autores de guiones pueden usarlo de esa manera en lugar de echo
, porque de manera predeterminada, el intérprete de lotes imprimirá cada comando antes de procesarse. Dado que los comandos rem
no hacen nada, es seguro imprimirlos sin efectos secundarios. Para evitar la impresión de un comando, coloque un prefijo con @
o, para aplicar esa configuración en todo el programa, ejecute @echo off
. (Es echo off
para evitar imprimir más comandos; la @
es para evitar imprimir ese comando antes de que la configuración de eco tenga efecto).
Por lo tanto, en su archivo por lotes, puede usar esto:
@echo off
REM To skip the following Python commands, put "REM" before them:
python foo.py
python bar.py
No, los archivos de proceso por lotes antiguos usan REM
como comentario. ECHO
es el comando que imprime algo en la pantalla.
Para "comentar" las secciones del archivo puede usar GOTO
. Un ejemplo de todos estos comandos / técnicas:
REM it starts here the section below can be safely erased once the file is customised
ECHO Hey you need to edit this file before running it! Check the instructions inside
ECHO Now press ctrl-c to interrupt execution or enter to continue
PAUSE
REM erase the section above once you have customised the file
python executed1.py
ECHO Skipping some stuff now
GOTO End
python skipped1.py
python skipped2.py
:END
python executed2.py
¿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ó el ejemplo un poco para que contenga los elementos que aparentemente está buscando.
Puedes comentar algo usando ::
o REM
:
your commands here
:: commenttttttttttt
o
your commands here
REM commenttttttttttt
Para hacerlo en la misma línea que un comando, debes agregar un signo:
your commands here & :: commenttttttttttt
o
your commands here & REM commenttttttttttt
Nota:
- El uso de
::
en lógica anidada (IF-ELSE
,FOR
loops, etc ...) causará un error. En esos casos, useREM
lugar.
Utilice ::
o REM
:
:: commenttttttttttt
REM commenttttttttttt
PERO (como la gente notó):
- Si usa en línea, necesita agregar
&
carácter:
your commands here & :: commenttttttttttt
- Dentro de la lógica anidada (
IF/ELSE
,FOR
loops, etc ...) useREM
porque::
da un error. -
::
puede fallar dentro desetlocal ENABLEDELAYEDEXPANSION