gpt4 book ai didi

windows - 批处理文件编码

转载 作者:可可西里 更新时间:2023-11-01 11:55:53 24 4
gpt4 key购买 nike

我想处理包含奇怪字符的文件名,例如法语 é。

在 shell 中一切正常:

C:\somedir\>ren -hélice hélice

我知道如果我将这一行放在 .bat 文件中,我会得到以下结果:

C:\somedir\>ren -hÚlice hÚlice

看到了吗? é 已被 Ú 取代。

命令输出也是如此。如果我在 shell 中 dir 某个目录,则输出很好。如果我将此输出重定向到一个文件,一些字符会被转换。

那么我如何告诉 cmd.exe 如何解释在我的批处理文件中显示为 é 的内容,实际上是 é 而不是 Ú 或逗号?

所以在执行 .bat 文件时没有办法给出有关编写它的代码页的提示?

最佳答案

您必须使用 OEM 编码保存批处理文件。如何执行此操作因您的文本编辑器而异。在这种情况下使用的编码也各不相同。对于西方文化,它通常是 CP850。

批处理文件和编码实际上是两个不太相像的东西。不幸的是,您会注意到在那里也无法使用 Unicode(即使环境变量可以很好地处理它)。

或者,您可以将控制台设置为使用其他代码页:

chcp 1252

应该可以解决问题。至少它在这里对我有用。

当您进行输出重定向时,例如使用 dir,同样的规则适用。使用控制台窗口的代码页。您可以使用 /u 切换到 cmd.exe 以强制 Unicode 输出重定向,这会导致生成的文件采用 UTF-16。

一般cmd.exe中的编码和代码页,也可以看这个问题:

编辑:至于您的编辑:不,cmd 总是假设批处理文件是用控制台默认代码页编写的。但是,您可以轻松地在批处理的开头包含一个 chcp:

chcp 1252>NUL
ren -hélice hélice

为了在直接从命令行使用时更加健壮,您可能需要记住旧代码页并在之后恢复它:

@echo off
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
chcp 1252>nul
ren -hélice hélice
chcp %cp%>nul

关于windows - 批处理文件编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1427796/

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