Windows批处理:(robo)复制命令的Unicode参数

我需要在一个batch file中复制多个文件。 这些文件具有映射到不同代码页的Unicode称。

例:

set ArabicFile=ڊڌڵڲڛشس set CyrillicFile=щЖЛдЉи set GermanFile=Bücher copy %ArabicFile% SomePlaceElse copy %CyrillicFile% SomePlaceElse copy %GermanFile% SomePlaceElse 

问题:batch file不能是Unicode。

问题:如何将Unicode文件名写入batch file,以便复制命令识别它们?

笔记:

我不在乎如何显示文件名称。
其实batch file不仅仅是复制这些文件,我只是简化了描述,使问题更清晰。

正确的batch file:

用Arnout的答案我修改我的batch file如下。 现在它可以正常工作,而不需要更改字体(如Arnout所评论的那样,这会很麻烦)。

 @echo off chcp 65001 set ArabicFolder=ڊڌڵڲڛشس set CyrillicFolder=щЖЛдЉи set GermanFolder=Bücher robocopy /ed:\temp\test\%ArabicFolder% d:\temp\test2\%ArabicFolder% /log:copy.log robocopy /ed:\temp\test\%CyrillicFolder% d:\temp\test2\%CyrillicFolder% /log+:copy.log robocopy /ed:\temp\test\%GermanFolder% d:\temp\test2\%GermanFolder% /log+:copy.log 

Solutions Collecting From Web of "Windows批处理:(robo)复制命令的Unicode参数"

如果

  • 我添加CHCP 65001作为批处理文件的第一行,
  • 将文件保存为不含BOM的UTF-8
  • 设置我的控制台字体为“光栅字体”(在我的Win7框,我可以选择Consolas或Lucida控制台)以外的东西,

有用。 简单,不是? 🙂

(如果你没有把非ASCII输出写到控制台,字体改变实际上是不必要的。)

我不确定,但我认为短(8.3)文件名将是ASCII,所以你可以这样引用? 你可以用dir /X找到短文件名。

我想创建一个批处理文件(例如RunThis.bat ),它创建可以是俄罗斯人或其他人的名字的目录。

例:
DOS窗口打开时出现提示符:

 D:\>md "Russia - Шпионка" 

这个命令的工作和名称正确显示。

但是,如果我尝试使用记事本并保存在ANSII ,我不能。
所以,如果我再次使用记事本,并保存在UTF-8,它将工作,但垃圾字符。

RunThis.bat(记事本保存UTF-8),给垃圾的字符。

 chcp 65001 set fn14="Russia - Шпионка" md %fn14% 

记事本的问题,它使用带有 BOM的UTF-8。

要使用没有 BOM的UTF-8保存.bat,我们必须使用像Notepad ++这样的编辑器。

RunThis.bat(记事本++保存UTF-8 – 无BOM

 chcp 65001 set fn14="Russia - Шпионка" md %fn14% 

这次我们直接从explorer.exe运行“ RunThis.bat ”就完美了