El comentario "rem" en el archivo .bat provoca el error "25 fue inesperado en este momento"

Aug 20 2020

¿No es esto raro? ¿Los comandos .bat rem tienen algún tipo de código de escape?

file.bat:

rem https://sourceforge.net/p/jedit/bugs/4084/?limit=25

Ejecutarlo:

C:\Users\admin>file.bat
25 was unexpected at this time.

C:\Users\admin>https://sourceforge.net/p/jedit/bugs/4084/?limit=25

No veo ningún nivel de error.

Respuestas

4 aschipfl Aug 20 2020 at 06:10

El remcomando admite un argumento, a saber /?, y lo codicia. Su URL contiene esa cadena.

El =es un separador de tokens (como SPACE, TAB, ,, ;), por lo que el resto parece interpretarse como otro comando (no válido).

Poner el texto del comentario entre comillas ayuda aquí, ya /?que ya no se detecta:

rem "https://sourceforge.net/p/jedit/bugs/4084/?limit=25"

Cuando escribe esto:

rem/ https://sourceforge.net/p/jedit/bugs/4084/?limit=25

la /?porción ya no se detecta también. Sin embargo, los caracteres especiales como &, <, >, |, (y )son entonces reconocidos.


Otra alternativa es usar un ::comentario de estilo, que en realidad es una etiqueta no válida (las etiquetas comienzan con a :, ver goto /?y call /?):

:: https://sourceforge.net/p/jedit/bugs/4084/?limit=25

Los caracteres especiales no son un problema aquí, pero no deben usarse dentro de un bloque de código entre paréntesis.

js2010 Aug 20 2020 at 00:26

Oh, eso es raro. Rem es como un comando regular que responde a /? en busca de ayuda, incluso si el /? está enterrado en algún lugar de otra cuerda. Me han dicho que poner la dirección entre comillas dobles lo soluciona.

C:\Users\admin>rem /?
Records comments (remarks) in a batch file or CONFIG.SYS.

REM [comment]

O toda esta cadena sin el 25 da el mismo resultado:

rem https://sourceforge.net/p/jedit/bugs/4084/?limit=

Records comments (remarks) in a batch file or CONFIG.SYS.

REM [comment]