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ファイルで実行した結果と同じ。
じゃあと、
/UNICODE | Out-File cfmfile.log -encoding UNICODE
とPowerShellのファイル出力に任せてみた。
やはりダメであった。robocopy自体のバグなんだね。