Глупое поведение командного файла. Пытается выполнить комментарии - PullRequest
2 голосов
/ 27 ноября 2009

Я пробовал префикс строки с точкой с запятой, 'REM' и т. Д., Но независимо от того, что, когда я запускаю свой пакетный файл, я продолжаю получать «неизвестную команду REM, что угодно»

Ответы [ 3 ]

5 голосов
/ 27 ноября 2009

"REM test" Не распознается, и это Windows Vista. Я просто получаю вывод rem на свою консоль.

Это совершенно нормальное поведение. Пакетные файлы - это просто последовательности команд, которые запускаются одна за другой. Таким образом, каждая строка будет выводиться на консоль, как если бы она была там напечатана.

H:\>echo rem test > test.cmd

H:\>test

выводит

H:\>rem test

как будто я набрал rem test прямо на консоли.

Вы можете подавить это, добавив в строку префикс @:

@rem test

или включив echo off в пакетный файл:

@echo off
rem test

Если я поставлю «:: test» и выполню его, я вернусь «Test».

Не могу воспроизвести здесь.

Если я поставлю "; test", он рекурсивно выполнится

Точка с запятой в начале строки, по-видимому, игнорируется.

4 голосов
/ 27 ноября 2009

Если вы говорите о cmd.exe пакетных файлах под Windows, вы можете использовать:

rem this method or
:: this method.

Для bash и многих других оболочек UNIX-типа вы используете:

# this method.

Я почти уверен, что вы не используете cmd.exe, поскольку это может привести к ошибке вроде:

'rem' is not recognized as an internal or external command,
operable program or batch file.

а не тогда:

Unknown command ...

Если вы используете оболочку типа UNIX, символ # почти наверняка является тем, что вам нужно. Если вы дадите нам знать, какую именно оболочку вы используете, мы, возможно, поможем вам в дальнейшем.

1 голос
/ 28 ноября 2009

вы, вероятно, создали файл UNICODE.Эти файлы содержат 2-байтовый заголовок с именем BOM, который не показывается никаким редактором, но cmd пытается их выполнить и не удается.

Чтобы убедиться, что это действительно проблема: введите любую другую команду в самом начале файлаи увидеть, что он выдает ту же ошибку - например, @echo test

Чтобы исправить это, просто создайте новый текстовый файл и скопируйте туда содержимое исходного файла.затем удалите исходный файл и замените его новым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...