¿Cómo "comentar" (agregar comentario) en un lote/cmd?


Tengo un archivo por lotes que ejecuta varios scripts de Python que hacen modificaciones de tabla.

  1. 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!)

  2. También quiero agregar comentarios para llamar su atención específicamente sobre las variables que necesitan actualizar en el archivo por lotes antes de ejecutarlo. Veo que puedo usar REM. Pero it parece que eso es más para actualizar al usuario con el progreso después de que lo hayan ejecutado.

¿Hay una sintaxis para agregar un comentario de manera más apropiada?

Author: T.Todua, 2012-06-30

7 answers

El comando rem es ciertamente para comentarios. No actualiza inherentemente a nadie después de ejecutar el script. Sin embargo, algunos autores de scripts podrían usarlo de esa manera en lugar de echo, porque por defecto el intérprete por lotes imprimirá cada comando antes de procesarlo. Dado que los comandos rem no hacen nada, es seguro imprimirlos sin efectos secundarios. Para evitar imprimir un comando, póngale el prefijo @, o, para aplicar esa configuración en todo el programa, ejecute @echo off. (Es echo off a evite imprimir más comandos; el @ es evitar imprimir ese comando antes de que la configuración de eco surta efecto.)

Entonces, 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
 674
Author: Rob Kennedy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-29 21:49:47

your commands here :: commenttttttttttt

O

your commands here REM commenttttttttttt

Notas:

  • En lógica anidada (IF-ELSE, FOR loops, etc...) :: dispara un error, así que use REM allí o escape usando el carácter ^, ex. ^( y ^)

  • En casos específicos (si lo usas en línea), es posible que tengas que agregar & firmar: & :: commenttttt

 730
Author: T.Todua,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-28 20:22:51

No, los archivos por lotes antiguos usan REM como comentario. ECHO es el comando que imprime algo en la pantalla.

Para "comentar" secciones del archivo se puede utilizar 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.

Puede leer más en este sitio web.

EDIT: modificamos un poco el ejemplo para que contenga los elementos que aparentemente estamos buscando para.

 43
Author: fvu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-29 22:01:22

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 se lee y luego se inscribe. :: 'ed line are ignored all the way. Esto podría acelerar su código en los "viejos tiempos". Más lejos más después de un REM usted necesita un espacio, después de:: usted 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 al salto de partes. Poner REM delante de cada línea puede llevar bastante tiempo. Como mencionado 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 en el que desea que el código continúe.

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
 28
Author: Kees,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-02 21:49:08

Comentarios de varias líneas

Si hay un gran número de líneas que desea comentar, entonces será mejor si puede hacer comentarios de varias líneas en lugar de comentar todas las líneas.

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

Puedes usar GOTO Label y :Label para hacer comentarios de bloque.

O, si el bloque de comentarios aparece al final del archivo por lotes, puede escribir EXIT al final del código y a continuación, 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...

Comentarios Source

 22
Author: Somnath Muluk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-24 10:50:55

Poner los 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 color C es el primer comando y :: set red font color es la segunda.


Importante:

Esta declaració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 más allá del primero. La prueba es fácil, esto goto no fallará tampoco:

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 color: ::, grey, on, blue.

Solo funcionará como:

color 17     &      :: grey on blue

Así que el ampersand es inevitable.

 12
Author: miroxlav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-07 11:14:13

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, debe agregar un ampersand:

your commands here      & ::  commenttttttttttt

O

your commands here      & REM  commenttttttttttt

 

Nota:

  • Utilizando :: en lógica anidada(IF-ELSE, FOR bucles, etc...) causará un error. En esos casos, utilice REM en su lugar.
 2
Author: Pikamander2,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-21 05:24:11