Я пытаюсь написать командный файл сценария сборки для мода Unreal Tournament 2004, для которого я хочу опубликовать исходный код. Этот скрипт содержит вызов XCOPY с параметром /EXCLUDE следующим образом:
XCOPY "%ProjectFolder%*" "%BuildFolder%" /S /C /Y /EXCLUDE:"%ProjectFolder%Build\CopyExcludes.cfg"
По какой-то причине эта команда говорит мне, что она не может прочитать файл CopyExclude.cfg. Как я могу это исправить?
В командном файле% ProjectFolder% является базовой папкой исходных файлов, включая обратную косую черту. % BuildFolder% - это подпапка в папке UT2004, где компилятор будет ожидать, что файлы будут. Я запустил пакетный файл с ECHO ON
чтобы увидеть расширенные переменные:
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
(Не берите в голову очевидный разрыв строки в команде, это просто перенос текста в окне CMD после 80 символов.)
Странная часть в том, что я могу поместить команду type "%ProjectFolder%Build\CopyExcludes.cfg"
непосредственно до и после команды XCOPY, и она правильно показывает содержимое файла в обеих позициях в пакетном файле:
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
#
~
Целевая папка для XCOPY существует и пуста. Обе папки не имеют особых ограничений доступа, по крайней мере, тех, о которых я знаю. Функция поиска дескриптора Process Explorer ничего не вызывает при поиске "CopyExclude", то есть файл, похоже, не заблокирован какой-либо другой программой. Я также уже пытался копировать другие подпапки по отдельности, но XCOPY все еще не может прочитать файл. Согласно Notepad++, все строки в файле заканчиваются CRLF.
Я использую Windows 7 Pro x64, но, надеюсь, смогу заставить это работать на любой версии Windows или редакции.