大量ファイルのコピーにrobocopyコマンドが便利だった話の共有

おはようございます。ささきです。

今回はファイルを大量のファイルをコピーする際に便利だったbatファイルについてご共有したいと思います。(Windowsのコマンドを使用しているためMac非対応だと思います。)

batファイルの作成は素人なので、中身の作りはいまいちかもしれません。

当該batファイルはあくまで参考情報であるため、転送による想定外のファイル消失について自己責任でご使用ください。

動作は想定通りするので、テストをしたうえで参考にしていただけると幸いです。

用途

少量データの転送は手作業でコピペ可能ですが、大量データである場合はcopyコマンドを使用したほうが楽なケースが多いです。

理由としては、同一名称のファイルがある場合に毎回どちらを残すか確認する必要があるからです。

当該batファイルは、転送元から転送先へコピーする際、転送先が最新だった場合にはコピーをスキップ。

転送元が最新だった場合には上書き保存をするようにしています。

(上記については、batファイルの中身にコメントをしているのでそちらもご確認ください。)

使用シーン

  • フォルダ構成変更時
  • PCやサーバ移行時
  • etc…

batファイルの中身

batファイル自体をダウンロートする方式にすると職場で使用できない、セキュリティ面で心配ということがあると思います。

そのため、batファイルの中身を記事に記載します。

下記手順でbatファイルをお手元で作成してください。

  1. 下記「batファイルの中身」をコピー
  2. 手元のメモ帳(notepad)にペースト
  3. 「set FROM=」の後ろに転送元のフォルダパスを入力(※1)
  4. 「set TO=」の後ろに転送先のフォルダパスを入力(※1)
  5. メモ帳保存時に拡張子「.bat」を指定(※2)

※1 「=」の後ろに半角スペースを入力すると動作しなくなるためご注意ください。

※2 ファイル名を「robocopy.bat」にすると動作しません。

batファイルの中身

@echo off

rem robocopyを使用し最新ファイルのみコピーするためのbatファイル
rem 転送元が最新の場合、転送先のファイルが書き換えられる
rem 転送元が古い場合、転送先のファイルが残る
rem 転送元にのみ存在するファイル・フォルダがある場合、転送先にディレクトリ構造含めコピーされる
rem 転送先にのみ存在するファイル・フォルダがある場合、該当のファイル・フォルダに変更はなし

rem /E = からのディレクトリを含むサブディレクトリをコピー(転送先にフォルダがない場合はフォルダごとコピー)
rem /XO = 古いファイルを除外(転送元、転送先で同一のファイルが存在する場合、日付が最新のファイルのみをコピー)

chcp 65001

set FROM=D:\work\転送元
set TO=D:\work\転送先
set LOG=./log.txt

robocopy %FROM% %TO% /E /XO > %LOG%

テストについて

大量データ転送前にテスト用の転送元、転送先フォルダを作成し、想定通りファイルが転送されることをご確認のうえご使用ください。

また、bat内のコメントに大まかに動作の説明を記載していますが、不明なコマンドやオプションがあれば調べていただくようお願いします。

あくまで参考情報であるため、転送による想定外のファイル消失について自己責任でご使用ください。

まとめ

プライベートや、業務の中でよく実施する作業については、自動化や半自動化することができないか考える癖をつけ始めています。

皆さんの参考になる情報がありましたら、素人ながらご紹介したいと思います。

このような情報を他のブログやウェブサイトから参考にされる場合、初回は中身をしっかりと勉強したうえで使用されることをおすすめいたします。

職場でそのまま使用していたら想定外の動作をし、リカバリーに苦労している方がいました。

効率化を目的としたのに、時間を取られてしまっては意味がありません。情報の取捨選択大事!。

定型業務を効率化することでお金だけではなく、時間を稼いでいきましょう!

本日の独り言
本日の独り言

ノーコード、もしくはプログラミングによってもっと自由に提携作業を効率化できる方法がないか検討中です。

今のところ気になっているPythonで考えています。

何かできたら、また共有いたします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA