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.