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

Hel*_*ein 9 windows unicode filenames batch-file

我需要在一个批处理文件中复制多个文件.这些文件具有映射到不同代码页的Unicode名称.

例:

set ArabicFile=???????
set CyrillicFile=??????
set GermanFile=Bücher

copy %ArabicFile% SomePlaceElse
copy %CyrillicFile% SomePlaceElse
copy %GermanFile% SomePlaceElse
Run Code Online (Sandbox Code Playgroud)

问题:批处理文件不能是Unicode.

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

笔记:

我不在乎如何显示文件名.
实际上批处理文件不仅仅是复制这些文件,我只是简化了描述以使问题更加清晰.

正确的批处理文件:

通过Arnout的回答,我修改了我的批处理文件,如下所示.它现在可以正常工作而不需要更改字体(这会很麻烦,正如Arnout评论的那样).

@echo off

chcp 65001

set ArabicFolder=???????
set CyrillicFolder=??????
set GermanFolder=Bücher

robocopy /e d:\temp\test\%ArabicFolder% d:\temp\test2\%ArabicFolder% /log:copy.log
robocopy /e d:\temp\test\%CyrillicFolder% d:\temp\test2\%CyrillicFolder% /log+:copy.log
robocopy /e d:\temp\test\%GermanFolder% d:\temp\test2\%GermanFolder% /log+:copy.log
Run Code Online (Sandbox Code Playgroud)

Arn*_*out 14

如果

  • 我添加CHCP 65001为批处理文件的第一行,
  • 将文件保存为UTF-8而不使用BOM,和
  • 将我的控制台字体设置为"光栅字体"以外的其他字体(在我的Win7盒子上,我可以选择Consolas或Lucida控制台),

有用.简单,不是吗?:-)

(如果您没有将非ASCII输出写入控制台,则实际上不需要更改字体.)