是否可以在BAT文件中使用扩展的ASCII字符?

Sim*_*mon 3 ansi batch-file extended-ascii

我有一堆动态创建的*.BAT文件.这些BAT文件用于在服务器中创建文件夹.每个BAT文件中只有一行,例如:MKDIR\NetworkShare\abc\123

这个"abc\123"字符串来自数据库.

它可以运行一段时间按需创建数千个子文件夹,直到今天它停止创建一个特殊的子文件夹,它在字符串中有一个"关闭单引号"(如果从dos提示符输入,则为Alt+ 0146).

我做了一些研究,发现这个"关闭单引号"是一个扩展的ASCII字符.它无法在ANSI BAT文件中正确保存(最终为其他内容).我尝试了UNICODE和UTF-8 BAT文件,但它不起作用.

唯一近乎接近的解决方案是我尝试使用二进制编辑器来确保代码146,但代码146给了我Æ(ALT-146)而不是"单引号"(Alt+ 0146).

我知道我可以在DOS提示符下手动输入特殊字符(使用键盘Alt+ ).但是有没有办法在BAT文件中正确保存这个"关闭单引号"(Alt+ 0146)所以我可以动态执行它们?

主机系统是Windows Server 2003美国英语.

Sim*_*mon 5

谢谢你这个CHCP 65001技巧.它导致适当的解决方案:

我采取了以下步骤来解决问题:

+++++++++++++++++++

准备BAT文本文件(手动或动态)

+++++++++++++++++++

(1)将第一行留空(这是必要的,因为UTF-8文本文件的第一行中有隐藏的字符)

(2)将CHCP 65001作为第二行

(3)主线在这里:MKDIR \networkshare\abc(右单引号 - >这是特殊的扩展ASCII字符)\ 123

(4)确保BAT文件保存为UTF-8

+++++++++++++++++++

现在是CMD.EXE技巧

+++++++++++++++++++

(1)启动cmd.exe

(2)打开cmd.exe黑屏属性

(3)确保黑屏字体为"真实类型"即"TT"之类.默认情况下,它是光栅字体,无法正确处理特殊的ascii代码.(这是关键步骤)

(4)现在我可以运行我的BAT来正确处理那些扩展的ASCII字符.