使用重音字符管理路径

时间:2013-04-23 23:09:02

标签: batch-file path diacritics

在批处理中,指定名称中包含重音字符的路径,在文件系统中找不到文件 剥离路径中的所有重音字符,找到这些文件。尽管如此, 我必须管理用重音字符编写的路径。有什么方法可以解决这个问题吗?

如果你需要了解我的操作系统,那我就是SEVEN 32。

由于

4 个答案:

答案 0 :(得分:4)

默认情况下,批量配置无法打印unicode字符,但CAN识别出字符并使用它。 这意味着您无法打印“ú”,但您可以访问名为“ú”的文件夹或触摸名为“ú”的文件。

然后,如果您的脚本无法访问带有重音字符的文件,可能原因是您的脚本编码不是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

<强>输出:

éíóú

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

答案 1 :(得分:1)

这不起作用:

@echo off
start "" "C:\Users\dmb3419\Documents\dev\ééééééééé"

这有效:

@echo off
chcp 1252
start "" "C:\Users\dmb3419\Documents\dev\ééééééééé"

答案 2 :(得分:0)

在使用.bat和xcopy的路径名中,我对法语口音有类似的问题。

使用:

@echo off
chcp 1252

为我处理了此问题,并且.bat文件中的重音已正确识别。 在MS server2012 R2 cmd.exe下运行

答案 3 :(得分:0)

请,请参阅下面的技巧如何解决我的问题而不将其与外来代码混合:

CHCP 1252
调用“ C:\ Program Files \ Microsoft Office \ root \ Office16 \ EXCEL.EXE”“ Z:\ CYRO \ ARTE \ ArteRHDicionáriode Dados.xlsx”
调用“ C:\ Program Files \ Microsoft Office \ root \ Office16 \ EXCEL.EXE”“ Z:\ CYRO \ ARTE \Unificação\ 01-材质APOIO \ PADRAO_TABELA_CONVERSAO.xlsx”

希望它可以帮助其他人!
最好的问候。