我的标题中有一个TFS项目,标题为0x96,例如我需要在批处理文件中引用“Project - X”。问题是这个特定的破折号由0x96(而不是0x20)表示,它是Unicode中的控制字符(û在ASCII?中),因此以下(在ANSI编码的.cmd文件中)失败为“ProjectûX”。
echo "Project – X"
但是直接粘贴到命令行(我认为)它会欺骗并将0x96转换为0x20(这是不好的,因为我的文件名不匹配)。我尝试使用十六进制编辑器,看起来有一些作弊行为。
如果.cmd文件被编码为ANSI以外的其他文件,则无效。
答案 0 :(得分:3)
默认情况下,cmd.exe使用旧的“OEM”代码页,而Unicode前Windows应用程序使用“ANSI”代码页(Code Pages Supported by Windows)。
您将(as jeb alludes)要么以OEM编码保存文本文件(假设该字符在其中),要么switch your console保存为ANSI编码。
答案 1 :(得分:2)
像这样的东西
@echo off
SETLOCAL EnableDelayedExpansion
chcp 1252
set "name=Projekt û X.txt"
chcp 850
type "!name!"
重要的是 chcp 1252 ,chcp 850只能切换回我的默认代码页,但不是必需的。