Batch file 使用重音字符管理路径

Batch file 使用重音字符管理路径,batch-file,path,diacritics,Batch File,Path,Diacritics,在批处理中,指定名称包含重音字符的路径时,文件系统中找不到文件 去掉路径中的所有重音字符,即可找到这些文件。然而 我必须管理用重音字符书写的路径。有没有办法解决这个问题 如果你想知道我的操作系统,我是7-32 谢谢,默认情况下批处理配置无法打印unicode字符,但可以识别并使用该字符。 这意味着您不能打印“ú”,但可以访问名为“ú”的文件夹或触摸名为“ú”的文件 如果脚本无法访问带有重音字符的文件,可能是因为脚本的编码不是ANSI, 因此,在记事本中打开脚本,并确保使用ANSI编码(无utf-

在批处理中,指定名称包含重音字符的路径时,文件系统中找不到文件 去掉路径中的所有重音字符,即可找到这些文件。然而 我必须管理用重音字符书写的路径。有没有办法解决这个问题

如果你想知道我的操作系统,我是7-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
éíóú
输出:

@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
输出:

@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
éíóú
PS1:记住我说过的所有事情,用ANSI编码保存脚本

PS2:注意我是如何使用chcp850命令的,这意味着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
您可以在此处阅读代码页:

这不起作用:

@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-MATERIAL APOIO\PADRAOúu TABELAúu CONVERSAO.xlsx”

希望它能帮助别人

致以最诚挚的问候。

我有一些带有西里尔字母字符的路径和文件名,没有任何问题。你能举一些例子吗?您使用什么编辑器进行批处理编程?你能处理for循环中的文件名吗,例如,%%i in(*)do echo(%%i?我使用的编辑器是bloc notes或notepad++。下面是编写的代码!@echo off&setlocal for/f“tokens=2*delims=”%%x in(Myfile)do(if/i“%%x”=“dir1”set“path1=%%y”if/i“%%x”=“dir2”set“path2=%y”)echo%path1%echo%path2%for/f“tokens=*”%%x in('findstr/v/C:“Myfile”)do(echo”%path1%\%%x.txt“===================================================================================================调用second.bat“%path1%\%%x.txt”)一旦%path1%或%path2%包含重音字符,则找不到文件,因此调用second.bat“%path1%\%%x.txt”有故障。如果我在path1和path2中删除无标题字符,则正确。但是我不想。谢谢你在你的问题中贴上这些名字?我可以很容易地用外来字母(ė、–、Ú、ø)创建文件名,并按批处理它们。现在,我刚刚在记事本的首选项UTF8中更改为ANSI,保存文件,打开它,查看ANSI当前是否默认编码,然后关闭它。尽管如此,脚本仍然无法通过其路径访问文件。谢谢,这是正常的,还是我应该执行您建议的仅访问该文件的以下操作?我注意到我在vbsscipt中没有此问题。实际上,会找到路径包含重音字符的文件。Windows批处理中的情况不是这样。太好了!现在很好用。你把我从沉重的负担中解放出来。非常感谢。这对我不起作用,路径仍然不好(重音字符被其他字符替换),我要做的是将de代码页更改为1252。