如何在批处理文件中输出0x96字符?

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

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

如果以ANSI以外的任何编码方式进行编码,则.cmd文件将无法正常工作。

2个回答

4

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

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


感谢提供有关更改代码页的信息,我现在正在阅读相关资料。 - timB33

2

类似这样的东西可以正常运行

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接