2013-04-23 97 views
4

在批处理,指定名称中包含重音字符的路径的路径,文件不被发现到,而 剥离出路径中的所有重音字符的文件系统,这些文件被发现。不过, 我来管理与重音字符写的路径。有什么办法可以解决这个问题吗?管理与重音字符

如果您需要了解我的操作系统,我在SEVEN 32

感谢

+0

我有一些西里尔字符的路径和文件名,并没有与他们的问题。你可以发表一些例子吗?你使用什么编辑器进行批量编程?你能处理for循环中的文件名,例如。 (%)我在(*)do echo(%%〜i'? – Endoro 2013-04-23 23:16:31

+0

编辑器,我使用的是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” ) 回声%PATH1% 回声%PATH2% FOR/F “令牌= *” %%中的x('FINDSTR/v/C:”“MYFILE')做( echo“%path1%\ %% x.txt”===================================== ===== 调用second.bat“%path1%\ %% x.txt”) – new 2013-04-23 23:22:25

+0

一次%path1%或%path2%包含重音字符,找不到文件,所以调用second.bat“%path1%\ %% x.txt”)是错误的。如果我将aceented字符删除到path1和path2中,那就对了。但我不想。谢谢 – new 2013-04-23 23:37:13

回答

4

批量使用默认配置不能打印Unicode字符,但是可以识别字符并使用它。 这意味着你不能打印“ú”但是你可以查看在一个名为“U”或触摸被称为“u”的文件夹。

然后,如果您的脚本无法访问带有重音字符的文件,原因可能是您的脚本编码不是ANSI,因此请在记事本中打开脚本并确保使用ANSI编码保存它(no 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代码页,但我启动CMD以默认的1250代码页以避免所有这些问题我需要使用代码页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

现在,我已将记事本的首选项UTF8更改为ANSI,保存该文件,打开它以查看ANSI目前是否默认编码并关闭它。尽管如此,脚本仍然无法通过它的路径访问文件。谢谢 – new 2013-04-24 08:15:38

+0

这是正常的,或者我应该不得不做以下建议只访问该文件? – new 2013-04-24 08:40:10

+0

我注意到我在vbsscipt中没有这个问题。事实上,找到其路径包含重音字符的文件。 Windows批处理中没有这种情况。 – new 2013-04-24 09:44:23

1

这不起作用:

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

此作品:

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