有馬総一郎のブログ

(彼氏の事情)

robocopyでのUNICODE出力の謎

robocopy、これは、初めて使ったときはXCOPYに変わる優れものだ!と喜んだけど、UNICODEによるログ出力がおかしい。

Vistaでは、以下の様なサブフォルダを持つフォルダをrobocopyしようとする。

robocopyp C:\Users\J3206\Documents\from\ C:\Users\J3206\Documents\to\ /MIR /L /TEE /UNICODE /UNILOG:robocopy.txt

有馬総一郎のブログ

有馬総一郎のブログ

/UNICODEオプションがあるのに、コマンドプロンプトの時点ですでに文字化けしている。実際ログファイルを見ても、

有馬総一郎のブログ

と全く読めない。

有馬総一郎のブログ

バイナリエディタでみると、先頭のBOMだけUNICODEとして作成されているだけで、 FFFEから後はSJISとしてログ出力されている。

Windows 7が手元にないのでスクリーンショットが取れないが、7においても、それは改善されていないようだった。いろんなサイトをググったが、robocopyのUnicodeによる文字化けを追求している日本語サイトは見当たらなかった。海外のサイトで、それはバージョンによるものだとか、CHCP使ってみろだなの、あったが、結局分からずじまい。

で、Windows8においては、どうなったか。

ログ出力だけ行う/Lをオプションとしてつけるとうまく出力されるけど、実際にコピーさせると、SJIS対応外の文字が、ただ消えてしまうという結果となった。もしかして、PowerShellを経由して実行されたら、変わるんじゃないかと思ったが、batファイルで実行した結果と同じ。

有馬総一郎のブログ
/L ログ出力だけ指定した場合

有馬総一郎のブログ
実際に同期をとった場合

じゃあと、

/UNICODE | Out-File cfmfile.log -encoding UNICODE
とPowerShellのファイル出力に任せてみた。

有馬総一郎のブログ

有馬総一郎のブログ

やはりダメであった。robocopy自体のバグなんだね。

[cate: ms-dos ] [tags: MS-DOS ]

« PowerShellを使ってみる その2 robocopyの繰り返されるコピーの問題 »

Comments