XCOPY não pode ler / EXCLUDE arquivo

6

Estou tentando escrever um arquivo de lote de script de construção para um mod de Unreal Tournament 2004 para o qual quero publicar o código-fonte. Este script contém uma chamada para XCOPY com o parâmetro / EXCLUDE da seguinte forma:

XCOPY "%ProjectFolder%*" "%BuildFolder%" /S /C /Y /EXCLUDE:"%ProjectFolder%Build\CopyExcludes.cfg"

Por alguma razão, esse comando informa que não é possível ler o arquivo CopyExcludes.cfg. Como posso consertar isso?

Dentro do arquivo de lote,% ProjectFolder% é a pasta base dos arquivos de origem, incluindo uma barra invertida no final. % BuildFolder% é uma subpasta dentro da pasta UT2004 onde o compilador espera que os arquivos estejam. Eu executei o arquivo em lote com ECHO ON para ver as variáveis expandidas:

C:\UT2004>XCOPY "C:\UT2004\EvenMatch\*" "C:\UT2004\EvenMatchV1" /S /C /Y /EXCLUD
E:"C:\UT2004\EvenMatch\Build\CopyExcludes.cfg"
Datei "C:\UT2004\EvenMatch\Build\CopyExcludes.cfg" kann nicht gelesen werden.

0 Datei(en) kopiert

(Nevermind a aparente quebra de linha no comando, que é apenas o texto de quebra automática de janela CMD após 80 caracteres.)

A parte estranha é que eu posso colocar o comando type "%ProjectFolder%Build\CopyExcludes.cfg" antes e depois do comando XCOPY e ele mostra corretamente o conteúdo do arquivo em ambas as posições no arquivo de lote:

C:\UT2004>type "C:\UT2004\EvenMatch\Build\CopyExcludes.cfg"
.svn
.bak
.git
.cfg
#
~

C:\UT2004>XCOPY "C:\UT2004\EvenMatch\*" "C:\UT2004\EvenMatchV1" /S /C /Y /EXCLUD
E:"C:\UT2004\EvenMatch\Build\CopyExcludes.cfg"
Datei "C:\UT2004\EvenMatch\Build\CopyExcludes.cfg" kann nicht gelesen werden.

0 Datei(en) kopiert

C:\UT2004>type "C:\UT2004\EvenMatch\Build\CopyExcludes.cfg"
.svn
.bak
.git
.cfg
#
~

A pasta de destino do XCOPY existe e está vazia. Ambas as pastas não têm restrições de acesso especiais, pelo menos nenhuma que eu saiba. O recurso de controle de localização do Process Explorer não exibe nada ao procurar por "CopyExclude", ou seja, o arquivo não parece estar bloqueado por nenhum outro programa. Eu também já tentei copiar outras subpastas individualmente, mas o XCOPY ainda não consegue ler o arquivo. De acordo com o Notepad ++, todas as linhas no arquivo são finalizadas com o CRLF.

Estou usando o Windows 7 Pro x64, mas espero que isso funcione em qualquer versão ou edição do Windows.

    
por Wormbo 22.08.2015 / 11:36

1 resposta

8

O prompt de comando do DOS e comandos individuais têm tratamento diferente de cotações. Remova as aspas duplas em torno do nome do arquivo de exclusão e você deve estar definido!

Para nomes de arquivos com espaços, você pode usar a versão de oito caracteres, por exemplo, PROGRA~1 para Program Files .

    
por 22.08.2015 / 14:48