gpt4 book ai didi

unicode - 如果调用 chcp,则不会执行批处理脚本

转载 作者:行者123 更新时间:2023-12-04 11:32:03 24 4
gpt4 key购买 nike

我正在尝试使用批处理脚本删除一些包含 unicode 字符的文件(这是必需的)。所以我运行cmd并执行:

> chcp 65001

有效地将代码页设置为 UTF-8。它有效:
D:\temp\1>dir
Volume in drive D has no label.
Volume Serial Number is 8C33-61BF

Directory of D:\temp\1

02.02.2010 09:31 <DIR> .
02.02.2010 09:31 <DIR> ..
02.02.2010 09:32 508 1.txt
02.02.2010 09:28 12 delete.bat
02.02.2010 09:20 95 delete.cmd
02.02.2010 09:13 <DIR> Rún
02.02.2010 09:13 <DIR> Гуцул Каліпсо
3 File(s) 615 bytes
4 Dir(s) 11 576 438 784 bytes free

D:\temp\1>rmdir Rún

D:\temp\1>dir
Volume in drive D has no label.
Volume Serial Number is 8C33-61BF

Directory of D:\temp\1

02.02.2010 09:56 <DIR> .
02.02.2010 09:56 <DIR> ..
02.02.2010 09:32 508 1.txt
02.02.2010 09:28 12 delete.bat
02.02.2010 09:20 95 delete.cmd
02.02.2010 09:13 <DIR> Гуцул Каліпсо
3 File(s) 615 bytes
3 Dir(s) 11 576 438 784 bytes free

然后我把同样的 rmdir批处理脚本中的命令并将其保存为 UTF-8 编码。但是当我运行时什么也没有发生,实际上什么也没有:在这种情况下,批处理脚本甚至没有 echo 工作。即使以 OEM 编码保存脚本也无济于事。

因此,当我在控制台中将代码页更改为 UTF-8 时,脚本似乎停止工作。有人知道如何解决吗?

最佳答案

如果您想在批处理文件中支持 unicode,那么一行上的 CHCP 本身只会中止批处理文件。我的建议是将 CHCP 放在需要 unicode 的每个批处理文件行上,如下所示

chcp 65001 > nul && <real command here>

示例:在我的例子中,我希望在调试时有一个很好的日志文件的 TAIL,但即使是拉丁 1 字符的内容也被搞砸了。所以这是我的批处理文件,它包装了来自 Windows Resource Kit 的真实尾部实现。
@C:\WINDOWS\system32\chcp.com 65001 >nul && tail.exe -f %1

另外,为了输出到控制台,你需要设置一个真正的字体,即 Lucidia 控制台。

显然,对于输出到文件,命令行需要作为 Unicode 运行,因此您可以按如下方式启动批处理脚本
cmd /u /c <batch file command here>

免责声明:在带有 Windows Resource Kit 的 Windows XP sp3 上进行了测试。

关于unicode - 如果调用 chcp,则不会执行批处理脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com