【问题标题】:Is it possible to use extened ASCII characters in a BAT file?是否可以在 BAT 文件中使用扩展的 ASCII 字符?
【发布时间】:2012-03-24 05:46:55
【问题描述】:

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

这个“abc\123”字符串来自数据库。

它可以运行一段时间来按需创建数千个子文件夹,直到今天它停止创建一个具有“关闭单引号”的特殊子文件夹(Alt + 0146 if在 dos 提示符下键入)在字符串中。

我做了一些研究,发现这个“关闭单引号”是一个扩展的 ASCII 字符。它无法正确保存在 ANSI BAT 文件中(以其他方式结束)。我尝试了 UNICODE 和 UTF-8 BAT 文件,但它不起作用。

唯一接近关闭的解决方案是我尝试了二进制编辑器以确保它是代码 146,但代码 146 给我 Æ (ALT-146) 而不是“关闭单引号” (Alt + 0146)。

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

主机系统是 Windows Server 2003 US-English。

【问题讨论】:

标签: batch-file ansi extended-ascii


【解决方案1】:

感谢您提供的 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 字符了。

【讨论】:

  • 注意:上述解决方案仅适用于 Windows 7 和 Windows 2008 R2 服务器;不是 Windows 2003 服务器。在 Windows 2003 服务器中,CHCP 65001 不起作用。
【解决方案2】:

尝试将批处理文件的代码页更改为 UTF-8:将此行插入批处理文件的顶部并将文件另存为 UTF-8:

chcp 65001

但请注意:使用非 ASCII 字母创建文件夹可能会破坏一些可能依赖于旧 API 库的程序,或者只是假设所有文件夹和文件名都是 ASCII。

【讨论】:

    猜你喜欢
    • 2011-03-29
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2017-07-19
    相关资源
    最近更新 更多