Комментарий rem в файле .bat вызывает ошибку «25 в это время было неожиданным»

Aug 20 2020

Разве это не странно? Есть ли у команд .bat rem какой-то escape-код?

file.bat:

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

Запускаем это:

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

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

Я не вижу ошибок.

Ответы

4 aschipfl Aug 20 2020 at 06:10

Команда remподдерживает один аргумент, а именно /?, и жадно до него. Ваш URL-адрес содержит эту строку.

=Представляет собой стандартный маркер сепаратор (так же , как SPACE, TAB, ,, ;), и так остаток , кажется, интерпретируются как другая команда (недействительная).

Помещение текста примечания между кавычками здесь помогает, поскольку /?больше не обнаруживается:

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

Когда вы напишете это:

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

не /?часть больше не обнаруживается слишком. Тем не менее, специальные символы , такие как &, <, >, |, (и )затем распознаются.


Другой альтернативой является использование ::комментария в стиле, который на самом деле является недопустимой меткой (метки начинаются с символа :, см. goto /?И call /?):

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

Специальные символы здесь не проблема, но их нельзя использовать в заключенном в скобки блоке кода.

js2010 Aug 20 2020 at 00:26

О, это странно. Rem похож на обычную команду, которая отвечает на /? за помощью, даже если /? похоронен где-то в другой струне. Мне сказали, что если указать адрес в двойных кавычках, это исправит.

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

REM [comment]

Или вся эта строка без 25 дает тот же результат:

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

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

REM [comment]