仕事で、既存システムのプログラム修正を行っていた際に、「修正したファイルだけ提出してほしい」という依頼がありました。
作っていたプログラムはJavaで多数のフォルダに分散してファイルが格納されていました。
その中から修正したファイルのみを手作業で抽出するのはめんどくさかったので、何か良い方法がないかと調べました。
すると、Windows標準のコマンドプロンプトを使って指定した更新日以降のファイルのみをコピーする方法があることがわかりました。
指定した更新日以降のファイルのみをコピーする方法
準備
動作確認のため、以下のフォルダ/ファイルを準備しました。
「C:\test\copy_moto\moto1」フォルダを作成し、以下のファイルを格納。
- test1.txt 更新日:2017/11/24
- test2.txt 更新日:2017/11/25
「C:\test\copy_moto\moto2」フォルダを作成し、以下のファイルを格納。
- test3.txt 更新日時:2017/11/24
xcopyコマンドでファイルをコピー
コマンドプロンプトからxcopyコマンドを使って、指定した更新日以降のファイルのみを「C:\test\copy_saki」へコピー。
xcopy /S /D:11/25/17 C:\test\copy\moto C:\test\copy\saki
※コピー先フォルダが存在しない場合、「[コピー先パス]は受け側のファイル名ですか、またはディレクトリ名ですか(F=ファイル、D=ディレクトリ)」と聞かれるので、「D」を入力。
xcopyコマンドの結果確認
xcopyコマンドで「2017/11/25」を指定したので、「C:\test\copy\saki」フォルダには更新日が「2017/11/25」だった「test2.txt」ファイルのみコピーされている。
実行したxcopyコマンドの解説
xcopy /S /D:[MM]/[DD]/[YY] [コピー元フォルダパス] [コピー先フォルダパス]
xcopy
xcopyコマンドは、ファイルをフォルダ構造ごとコピーするコマンド。
/S
/Sオプションは、ファイルが存在する場合のみディレクトリごとコピーする。
/D:[MM]/[DD]/[YY]
/Dオプションは、指定した日付以降に更新されたファイルのみコピーする。
[注意]
日付の指定方法が年月日の形式でないため注意が必要。
私の環境(Windows7)では、「月/日/年(西暦下2桁)」でうまくいったが、OSや言語設定によって指定方法が異なるとのこと。
[コピー元フォルダパス] [コピー先フォルダパス]
コピー元フォルダパスとコピー先フォルダパスを指定。
まとめ
バージョン管理ツールやフリーソフトを使用すれば同じようなことはできると思いますが、仕事で使うマシンの場合、勝手にソフトをインストールすることを禁止されいることもあります。
xcopyコマンドはWindows標準のコマンドプロンプトで実行できるので、ソフトのインストール等は必要ありません。
知っていて損はないかなと思い、自分の備忘録もかねて記事にしました。
コメント