3

我有一个TFS项目,其标题中有一个 0x96 字符,例如“Project – X”,我需要在批处理文件中引用它。问题是这个特殊的破折号由 0x96(而不是 0x20)表示,它是 Unicode 中的控制字符(ASCII 中的 û?),因此以下(在 ANSI 编码的 .cmd 文件中)失败为“Project û X”。

echo "Project – X"

但是当直接粘贴到命令行时(我认为),它会作弊并将 0x96 转换为 0x20(这不好,因为我的文件名不匹配)。我用十六进制编辑器试过这个,看起来有一些作弊行为。

如果 .cmd 文件被编码为除 ANSI 以外的任何其他文件,则该文件将不起作用。

4

2 回答 2

4

默认情况下,cmd.exe 使用旧的“OEM”代码页,而 pre-Unicode Windows 应用程序使用“ANSI”代码页(Windows 支持的代码页)。

您将(正如 jeb 所暗示的那样)要么必须将文本文件保存为 OEM 编码(假设字符甚至在其中),要么将控制台切换到 ANSI 编码。

于 2011-01-04T22:08:32.860 回答
2

像这样的东西

@echo off
SETLOCAL EnableDelayedExpansion
chcp 1252
set "name=Projekt û X.txt"
chcp 850
type "!name!"

重要的是chcp 1252, chcp 850 只是切换回我的默认代码页,但这不是必需的。

于 2011-01-04T15:48:31.110 回答