在批处理中,如果指定的路径名包含重音符号,那么在剥离路径中的所有重音符号时,文件系统中找不到文件。然而,我需要处理带有重音符号的路径。有没有办法解决这个问题?如果您需要知道我的操作系统,我使用的是SEVEN 32。谢谢。
默认情况下,批处理配置不能打印Unicode字符,但可以识别这些字符并使用它们。
这意味着你无法打印“ú”,但是你可以访问名为“ú”的文件夹或者触碰名为“ú”的文件。
所以,如果你的脚本无法访问带有重音符号的文件,可能的原因是你脚本的编码不是ANSI。因此,在记事本中打开脚本,并确保使用ANSI编码保存(不要用utf-8或unicode)。
例如:
@echo off
CHCP 850 >NUL
for %%# in (*.txt) do (
Echo [+] reading File: .\%%~nx# | MORE
Type "%%~nx#"
)
Pause>NUL
输出:
[+] reading File: .\áéíóúàèìòù ñ Ñ ç Ç.txt
This is the text content of my file with ISO-Latin characters
如果您想在CMD中打印带重音的字符,则需要进行字符转换,这可以解决问题:
@echo off
CHCP 850 >NUL
copy con Mychars.txt
在该提示框中,您需要输入想要的字符,例如"éíóú",然后您将获得一个名为"Mychars.txt"的文本文件,其中包含该内容:
‚¡¢£
@echo off
echo ‚¡¢£
Pause>NUL
输出:
éíóú
提示1:请记得以ANSI编码保存脚本并执行所有我说过的操作。
提示2:请注意我使用了CHCP 850命令,这意味着CMD的代码页。默认情况下,CMD使用850代码页,但我使用默认的1250代码页启动CMD以避免所有这些问题,因此在我的示例中,我需要使用代码页850来展示给您。
您可以通过注册表键设置默认的CMD代码页:
REG ADD "HKCU\Software\Microsoft\Command Processor" /V "Autorun" /T "REG_SZ" /D "chcp 1250 >NUL" /F >NUL 2>&1
您可以在这里阅读有关代码页的信息:http://msdn.microsoft.com/en-us/library/cc195064.aspx
(说明:该文档介绍了有关代码页的信息)这不起作用:
@echo off
start "" "C:\Users\dmb3419\Documents\dev\ééééééééé"
这个有效:
@echo off
chcp 1252
start "" "C:\Users\dmb3419\Documents\dev\ééééééééé"
我曾经遇到过使用 .bat 和 xcopy 命令时,路径名中包含法语重音符号的类似问题。
具体情况如下:
@echo off
chcp 1252
你可以帮我处理这个问题,.bat文件中的口音被正确识别。在MS server2012 R2 cmd.exe下运行。
for %%i in (*) do echo(%%~i
? - Endoro