.bat não funciona com comentários no topo?

2

Eu tenho um arquivo .bat que eu fiz para combinar vários arquivos em um novo arquivo e antes era assim:

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

Isso funcionou muito bem. Eu queria adicionar um comentário acima do código, então mudei para isso:

:: comment
:: comment

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

Não funciona mais. Nada é impresso no terminal quando eu o executo.

Se eu remover os comentários no topo, ele imediatamente começará a funcionar novamente.

Por que isso está acontecendo?

EDITAR:

Eu acho que não deveria ter simplificado muito o meu código. Um dos comentários no topo do arquivo é realmente assim:

:: E:\file3.txt+^

Brincando com isso, descobri que ter os caracteres +^ no comentário faz com que o arquivo não funcione.

Eu também tentei usar REM nessa linha, mas isso resulta em um erro sendo impresso. Então parece que existem personagens que você simplesmente não pode ter nos comentários?

    
por Nate 08.08.2014 / 03:50

2 respostas

2

O caractere ^ no final de uma linha atua como continuação de linha. (Funciona fugindo da linha de alimentação).

A continuação de linha não funciona após REM (com algumas exceções) - todos os caracteres após o REM são geralmente ignorados.

A continuação de linha funciona depois de :: , portanto, todo o seu script se torna um grande comentário.

Você pode corrigi-lo removendo o ^ do comentário ou adicionando outro caractere após o ^ ou usando REM em vez de :: .

Existem alguns casos em que um comentário REM pode ser continuado para a próxima linha:

@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

Não conheço nenhum estilo de comentário que seja universalmente seguro, independentemente do conteúdo. Por exemplo, um comentário contendo sintaxe de expansão inválida resultará em um erro de sintaxe fatal!

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

O comentário do estilo :: sofre o mesmo destino

:: %~x This comment containing invalid expansion results in a fatal error
echo This line is never reached
    
por 08.08.2014 / 16:14
5

:: não são comentários, mas rótulos.

Para fazer um comentário, inicie a linha com Rem em vez de ::

"Rem" é a abreviação de comentário.

    
por 08.08.2014 / 04:00