2

У меня есть файл .bat, который я сделал, чтобы объединить несколько файлов в новый файл, и раньше он выглядел так:

copy /b ^
E:\file1.txt+^
E:\file2.txt+^
E:\file3.txt ^
E:\output.txt
:: comment

Это сработало отлично. Затем я хотел добавить комментарий над кодом, поэтому я изменил его так:

:: comment
:: comment

copy /b ^
E:\file1.txt+^
E:\file2.txt+^
E:\file3.txt ^
E:\output.txt
:: comment

Это больше не работает. Ничего не выводится на терминал, когда я его запускаю.

Если я удаляю комментарии вверху, он сразу начинает работать снова.

Почему это происходит?

РЕДАКТИРОВАТЬ:

Думаю, мне не следовало так сильно упрощать свой код. Один из комментариев в верхней части файла на самом деле так:

:: E:\file3.txt+^

Поиграв с этим, я обнаружил, что наличие символов +^ в комментарии приводит к тому, что файл не работает.

Я также попытался использовать REM в этой строке, но это приводит к ошибке, которая выводится на печать. Таким образом, кажется, что есть персонажи, которых вы просто не можете иметь в комментариях?

2 ответа2

5

:: это не комментарии, а ярлыки.

Чтобы сделать комментарий, начните строку с Rem вместо ::

"Рем" - это сокращение от замечания.

2

Символ ^ в конце строки действует как продолжение строки. (Это работает, избегая перевода строки).

Продолжение строки не работает после REM (с некоторыми исключениями) - все символы после REM обычно игнорируются.

Продолжение строки работает после :: , поэтому весь ваш скрипт становится одним большим комментарием.

Вы можете исправить это, удалив завершающий ^ из комментария, или добавив еще один символ после ^ , или используя REM вместо :: .

В некоторых случаях комментарий REM можно продолжить до следующей строки:

@echo off
:: This is a multi-line comment ^
This line is a continuation of the comment above

:: This comment ^ does not continue
echo This line 1 is executed

rem This comment does not continue ^
echo This line 2 is executed

rem.This is a multi-line comment ^
This is a continuation of the comment above

rem^ This is a multi-line comment ^
This is a continuation of the comment above

rem^,This is a multi-line comment ^
This is a continuation of the comment above

rem^;This is a multi-line comment ^
This is a continuation of the comment above

rem^=This is a multi-line comment ^
This is a continuation of the comment above

rem^:This is a multi-line comment ^
This is a continuation of the comment above

Я не знаю ни о каком стиле комментария, который является универсально безопасным независимо от содержания. Например, комментарий, содержащий неверный синтаксис расширения, приведет к фатальной синтаксической ошибке!

rem %~x This comment containing invalid expansion results in a fatal error
echo This line is never reached

Комментарий :: style постигла та же участь

:: %~x This comment containing invalid expansion results in a fatal error
echo This line is never reached

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .