XCOPY 无法读取 /EXCLUDE 文件

Wor*_*mbo 9 windows-7 environment-variables xcopy batch-file

我正在尝试为要发布源代码的 Unreal Tournament 2004 mod 编写构建脚本批处理文件。此脚本包含对带有 /EXCLUDE 参数的 XCOPY 调用,如下所示:

XCOPY "%ProjectFolder%*" "%BuildFolder%" /S /C /Y /EXCLUDE:"%ProjectFolder%Build\CopyExcludes.cfg"
Run Code Online (Sandbox Code Playgroud)

出于某种原因,该命令告诉我它无法读取 CopyExcludes.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
Run Code Online (Sandbox Code Playgroud)

(不要管命令中明显的换行符,这只是 80 个字符后的 CMD 窗口硬换行文本。)

奇怪的是,我可以将命令放在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
#
~
Run Code Online (Sandbox Code Playgroud)

XCOPY 的目标文件夹存在且为空。这两个文件夹都没有任何特殊的访问限制,至少我知道没有。Process Explorer 的查找句柄功能在查找“CopyExclude”时不会显示任何内容,即该文件似乎没有被任何其他程序锁定。我也已经尝试单独复制其他子文件夹,但 XCOPY 仍然无法读取文件。根据 Notepad++,文件中的所有行都以 CRLF 终止。

我使用的是 Windows 7 Pro x64,但希望可以让它在任何 Windows 版本或版本上运行。

cxw*_*cxw 11

DOS 命令提示符和各个命令对引号的处理方式不同。删除排除文件名称周围的双引号,您应该设置!

对于带空格的文件名,您可以使用 8 个字符的版本,例如,PROGRA~1for Program Files.

  • 要获取文件夹的 8 个字符名称,请转到其父文件夹并键入 dir /x (3认同)