在批处理中,指定名称包含重音字符的路径,在文件系统中找不到文件,同时剥离路径中的所有重音字符,找到这些文件。尽管如此,我必须管理用重音字符编写的路径。有没有办法解决这个问题?
如果您需要了解我的操作系统,我在 SEVEN 32。
谢谢
在批处理中,指定名称包含重音字符的路径,在文件系统中找不到文件,同时剥离路径中的所有重音字符,找到这些文件。尽管如此,我必须管理用重音字符编写的路径。有没有办法解决这个问题?
如果您需要了解我的操作系统,我在 SEVEN 32。
谢谢
Batch 默认配置不能打印 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 中打印重音字符,则需要进行 char 转换,这可以解决问题:
@echo off
CHCP 850 >NUL
copy con Mychars.txt
在该提示中,您将编写所需的字符,例如“ éíóú ”,然后您将获得包含以下内容的“Mychars.txt”文本文件:
‚¡¢£
现在您可以使用该字符来打印重音字符:
@echo off
echo ‚¡¢£
Pause>NUL
输出:
éíóú
PS1:记得做我所说的以 ANSI 编码保存脚本的所有事情。
PS2:请注意我如何使用 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 下运行
请在下面查看您的提示如何在不将其与外来代码混合的情况下解决了我的问题:
CHCP 1252
调用 "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" "Z:\CYRO\ARTE\ArteRH Dicionário de Dados.xlsx"
调用 "C:\Program Files\Microsoft Office\root\Office16 \EXCEL.EXE" "Z:\CYRO\ARTE\Unificação\01 - 材料 APOIO\PADRAO_TABELA_CONVERSAO.xlsx"
希望它可以帮助别人!
此致。