最悲惨的是,我得到了几个TFS团队项目,其中包括一个短划线。
如果您不熟悉短划线,请打开MS Word并输入alt + 8211。
你会看到一个更大的破折号。 (如果它为你呈现,就像这样: - )。如果你打开记事本,你会看到一个?如果你在大多数Unicode编辑器中尝试它,你会看到!。
但我需要它是一个冲刺。因为我需要针对我的所有项目运行批处理文件。现在,项目的路径就是这个项目。
我创建一个包含项目名称的文件,然后将它们提供给我的批处理文件。
但是当它运行时,它将û代替 - 。
我可以做些什么来保持我的冲刺?
注意: 我有两个批处理文件。 First用文件中的params运行第二个。
答案 0 :(得分:3)
短划线字符是Unicode代码点U + 2013。在Windows代码页1252中,它是字符编号150.'charcter是代码页437中的字符编号150.因此,看起来一个进程正在代码页1252中编写文件,而另一个进程正在使用代码页437读取它。
理想情况下,除了Unicode之外的所有代码页都应该与世界大战,小痘和20世纪的其他遗物一起抛弃。不幸的是,Windows控制台使这很困难。
由于代码页437是大多数Windows安装的默认控制台代码页,因此我怀疑这是导致这些问题的默认设置。 (文件名由操作系统以Unicode格式存储,因此该部分至少是正确的。)由于代码页437不包含短划线字符,因此使用该代码页的任何系统都必须使用回退机制进行渲染文件名,例如问号。
通过将控制台代码页更改为支持短划线字符的内容(例如1252),可能会更正此问题。
您可以使用以下命令更改此代码页。
chcp 1252
此命令可能应放在批处理文件的开头。
这是一个可怕的黑客攻击,直到您可以将系统从上到下转换为支持Unicode的现代系统。
您可能还想在Powershell中尝试它,因为PS确实支持Unicode。
答案 1 :(得分:0)
我知道这是一个旧帖子,但我在这里看不到任何修复,在我尝试自己的修复之前,我花了一些时间进行了搜索。
在记事本中,我将字体从'Lucinda Console'更改为'TERMINAL',破折号( - )更改为(û)符号。我只是手动使用 - 在我的键盘上使用该字体,保存了我的BAT脚本,它执行得很好。