XP27 中存在错误。请尝试降级到 XP26。

XP27 中存在错误。请尝试降级到 XP26。

我尝试在 Windows 7 中使用 robocopy 来生成 Unicode 日志,因为我有包含 Unicode 字符的文件。我使用的命令是:

robocopy C:\mysource D:\mydest /mir /unilog:backup.log /tee

文件副本有效,屏幕上的输出正确,但日志文件本身只包含乱码。无论我使用命令提示符还是 Powershell,都是如此。

怎么回事?我做错什么了吗?

答案1

XP27 中存在错误。请尝试降级到 XP26。

这似乎是XP27RoboCopy 版本(Windows 7 附带)中的一个错误。

在版本中XP26(随 Windows Vista 提供)/UNILOG为我生成了一个完全可读的 Unicode 日志文件。

如果你手头没有 Vista简易RoboCopy也随XP26版本一起提供。(我实际上还没有尝试过 EasyRoboCopy 本身,只是robocopy.exe使用 从其安装文件中提取出来WinRAR。)

答案2

乍一看,我会说 Robocopy 在使用/UNILOG/TEE开关时编写的文件包含一个 UTF-16 小端字节顺序标记,后跟一个 ISO-8859-1 终端打字稿。

为了使其可读,我在 Ubuntu 中执行以下操作:

dd if=robocopy.log ibs=1 skip=2 obs=512        | # Strip the byte order mark
  iconv --from-code ISO-8859-1 --to-code UTF-8 | # Convert to UTF-8
  col -b > robocopy_utf-8.log                    # Interpret control characters

生成的文件与我在 Windows 命令提示符中看到的一致。

进一步阅读:男人dd, 男人iconv, 男人col

答案3

查看 Win7 上的(二进制)文件输出,/UNILOG 选项毫无用处。它写入标准 UNICODE BOM(FFFE),然后继续写入所有窄字符除了对于选项行(例如 /BYTES /S /COPY:DATS ...),这是实际的 unicode。之后,它会恢复为 ANSI 字符,并且不是UTF-8,或者;即,如果路径中的文件名包含宽字符,则会将其转换为窄“?”字符。

显然微软没有兴趣修复这个问题,因为这种情况已经持续了一段时间,而且我已获得所有更新。

答案4

使用 UTF-8 代码页,然后运行 ​​winword 转换器

如果您的文件或目录名称包含 Unicode 字符,则在发出带有参数的 Robocopy 命令之前/unilog使用该chcp 65001命令。(代码页65001 是 UTF-8

一旦您获得了损坏的 Unicode 日志,只需在 MS Word 中将其打开Unicode (UTF-8)并保存:

MS Word 文件转换对话框

相关内容