拖放;在Windows中将具有unicode名称的文件拖放到批处理文件

拖放;在Windows中将具有unicode名称的文件拖放到批处理文件,windows,unicode,batch-file,drag-and-drop,Windows,Unicode,Batch File,Drag And Drop,我想通过Windows下的拖放通过批处理文件处理一些文件 一些文件的名称中包含unicode字符,例如283;ěø.txt 不幸的是,许多非ASCII字符在使用过程中被损坏。例如,使用一个简单的批处理文件,如 echo %* 当我使用上面给出的示例名称拖放文件时,我得到: C:\>echo "C:\Example_eo.txt" "C:\Example_eo.txt" 因此,ěø已转换为eo,自然无法找到该文件 Windows批处理文件中是否有任何方法可以访问拖放到批处理文件中的文件的

我想通过Windows下的拖放通过批处理文件处理一些文件

一些文件的名称中包含unicode字符,例如283;ěø.txt

不幸的是,许多非ASCII字符在使用过程中被损坏。例如,使用一个简单的批处理文件,如

echo %*
当我使用上面给出的示例名称拖放文件时,我得到:

C:\>echo "C:\Example_eo.txt"
"C:\Example_eo.txt"
因此,ěø已转换为eo,自然无法找到该文件

Windows批处理文件中是否有任何方法可以访问拖放到批处理文件中的文件的实际unicode名称/路径


答:使用chcp 65001,但为了防止命令终止bat文件,有必要将任何输出从命令路由到nul。我还发现有必要使用&&将以下命令放在同一行上。因此,我的示例bat文件现在显示

chcp 65001 > nul && echo %* && pause
其中显示了文件名/路径的unicode/utf-8版本。您可以使用

chcp 65001
将cmd中的字体更改为
Lucida Console

您可以使用

chcp 65001

将cmd中的字体更改为
Lucida控制台

批处理文件在代码页65001中不起作用,因为CRT处理此二级公民代码页时存在错误:-(参见例如@bobince哦,对了,不过它对我很有用。我会看看这个链接,谢谢!我确实尝试过,在其他类似但不完全相同的问题中发现了它,但在Windows XP上它似乎完全阻止了bat文件的运行。现在,通过您的链接,我发现这是一个已知的问题,有可能解决。我将调查它。)R另外。我发现chcp 65001和将所有命令保持在一行的组合对我的目的起作用。批处理文件在代码页65001中不起作用,因为CRT在处理这个二级公民代码页时存在错误:-(参见例如@bobince哦,对了,不过它对我很有用。我会看看这个链接,谢谢!我确实尝试过,在其他类似但不完全相同的问题中发现了它,但在Windows XP上它似乎完全阻止了bat文件的运行。现在,通过您的链接,我发现这是一个已知的问题,有可能解决。我将调查它。)R我发现chcp 65001和将所有命令保持在一行的组合对于我的目的是有效的。