Robocopyの日本語表示ははっきり言ってめちゃめちゃ汚いです。以下のような感じです。表示位置がずれまくっているし、日本語も直感的に理解しづらいし、これでは、実行結果がどうであったのか読み取ることはできないです。
英語での表示にしてみると以下のような感じです。
縦がそろっていて非常に読みやすいです。一番下のマトリクスも読みやすく、もともとRobocopyは意外とちゃんと作っていたんだな、と思わされます。英語のままでもほぼ分かるのに、これほどわかりづらくなるのを知りながら、あえて日本語にしてしまうというのは全く理解に苦しみます。
普段Robocopyを使う時にも何とか英語表記で使えないものでしょうか。今回は英語表記でRobocopyを使う方法についてご紹介したいと思います。
コマンドプロンプト画面でRobocopyを使用する場合、コードページを UTF8 に設定しておくことで、Robocopyに英語表示させることができます。(ASCIIでも英語表示にはなるのですが、日本語も使うのでここはUTF8にします。)
コードページとは、使用する文字コード体系のことを指します。英語やほとんどのヨーロッパ言語で使われているコード ページは ANSI (1252)、日本語向けのコード ページはshift_jis (932) が使われています。
コマンドプロンプト画面で、コードページを変更する場合、chcp (change code page)コマンドを使用します。これを使ってコードページを UTF8 (65001) にします。
chcp コマンドで、現在のデフォルトのコードページが 932 であることが確認できます。
"chcp 65001" を実行すると、
画面が一度クリアされて 65001 に切り替わります。
その状態でRobocopyを実行すると
惜しい! ファイル名が文字化けしています。いろいろ解析してみると、コードページがUTF8になっているのに、ファイル名は生のまま shift_jisで出力しているため、文字化けしてしまっているようです。日付の"年月日"はUTF8になっているようで、ちゃんと表示されています。
ファイル名もちゃんと表示させる方法はないでしょうか。これについて、いろいろとかなり苦労して調べてみたところ、結論として、「/UNILOG:NUL /TEE」 というオプションを付けてみてください。以下の通り、ファイル名もUTF8になり完璧に英語表示になります。
なぜ、 「/UNILOG:NUL /TEE」なのかについては、話がかなり長くなりますので、別記事をご覧ください。
記事:Robocopyのログ出力の文字コードについて調べてみた (2020/2/11)
まとめると、コマンドプロンプト画面でrobocopy を完全な形で英語表示にする方法は以下の通りです。
しかし実際には、そこまでしてrobocopy 英語表記にしたいと思う人はいないかもしれませんね。
さて、それでは、RoboSync で、robocopyを英語表示にする方法をご紹介します。
RoboSync version 1.2.41 で、コピー項目の実行時に自動的にコードページをUTF8に設定し、Robocopyの表示を英語化できるようになりました。RoboSync設定画面で、「コピー項目実行時にコードページをUTF-8に設定しRobocopyを英語表示にする」にチェックを入れます。こうすることで、コピー項目の実行時にRobocopyの表示が英語化されます。(スクリプト実行時には英語化されません。)
この機能は、文字コードのエンコーダーに手を入れたり、Robocopyの出力を少し加工するようにしたりしてできており、ほぼ自然な形で英語化表示ができていると思います。できれば、この機能は有効にしておくことをお勧めします。是非お試しください。
上記の設定は、全てのコピー項目の実行時に英語化する設定でしたが、個別のコピー項目ごとに英語化の設定をする場合は、実行前スクリプトにコードページ変更コマンド "chcp 65001" を記述すればOKです。
ただし、このコピー項目が含まれるスクリプトを実行した時に、このコピー項目以降、コードページがUTF8のままになってしまうので、注意が必要です。
実行後スクリプトにコードページを戻すコマンド "chcp 932" を記入しておいたほうが良いかもしれません。
RoboSync: RobocopyのためのGUIツール
本サイトで公開しているツールです。ダウンロードはこのバナーをクリック!
Version 1.3.27 をリリースしました! (2021/1/1)
RobocopyをGUIから実行できるようにするツールです。コマンドプロンプトを表示することなく、GUI画面からほぼマウス操作だけで実行までできます。
Robocopyがバックグラウンドでそのまま実行されますので設定に迷うことはありません。
・ 複数のコピー項目の作成と管理。
・ スクリプトファイル(バッチファイル)出力が可能。スケジューラによるバックグラウンド処理にも使えます。
・ Robocopyによるコピー実行前に、実行プレビュー(/L)、パラメータのチェック(/QUIT)が可能。
・ Robocopyのパラメータ設定の簡易チェック、Robocopy実行前の簡易チェックを行います。
・ Robocopy実行前後で実行するスクリプトを定義可能。
・ Robocopy実行途中での中断、実行ログの履歴管理と保存が可能。
【関連記事・関連コンテンツ】