Windows,タイムスタンプを比較し、新しい場合は上書きする

スポンサーリンク

鍛錬 435

Windows,タイムスタンプを比較し、新しい場合は上書きする

2つのディレクトリ内容を比較し、「ファイル名が同じでタイムスタンプが異なる場合」に上書きして置き換えるには、replace にオプションの U を付加して使用します。

バックアップディレクトリに対して、「新しく更新したファイルのみを上書き保存する」などの用途があります。

以下の場合、ディレクトリ1 の ABC_3.txt で、ディレクトリ2 の ABC_3.txt を上書きして置き換えます。

上書き前

ディレクトリ1 ディレクトリ2 タイムスタンプを比較した場合
ABC_1.txt ABC_1.txt 同じ
ABC_2.txt ABC_2.txt 同じ
ABC_3.txt ABC_3.txt ディレクトリ1の ABC_3.txt の方が新しい

上書き後

ディレクトリ1 ディレクトリ2 タイムスタンプを比較した場合
ABC_1.txt ABC_1.txt 同じ
ABC_2.txt ABC_2.txt 同じ
ABC_3.txt ABC_3.txt 同じ

 
使用方法は、以下に示す通りです。

replace 比較するディレクトリの絶対パス\*.* 元から存在するディレクトリのパス /U
スポンサーリンク

ディレクトリ構成

以下は、今回使用するディレクトリの構成です。

関連記事:Windows,ディレクトリの構造をツリーで表示(確認)する

D:\test>
D:\test>tree /F
フォルダー パスの一覧
ボリューム シリアル番号は ****-**** です
D:.
├─dir_1
│      sample_1.txt
│      sample_2.txt
│      sample_3.txt
│
└─dir_2
        sample_1.txt
        sample_2.txt
        sample_3.txt
スポンサーリンク

実行結果

以下は、前述したディレクトリ構造にて、ファイルのタイムスタンプを比較し、新しい場合は上書きしています。

条件

以下は、次の条件にてタイムスタンプを比較しています。

ディレクトリ dir_1 ディレクトリ dir_2 タイムスタンプの比較
sample_1.txt sample_1.txt 同じ
sample_2.txt sample_2.txt 同じ
sample_3.txt sample_3.txt dir_1 の sample_3.txt の方が新しい

dir でタイムスタンプを確認

以下は、dir を使用して dir_1 内のファイルと dir_2 内のファイルについてタイムスタンプを確認しています。

dir_1 の sample_3.txt の方が新しいことが分かります。

dir_1 の sample_3.txt dir_2 の sample_3.txt
2019/02/23 02:36 2019/02/23 02:35
D:\test>
D:\test>dir dir_1
 ドライブ D のボリューム ラベルがありません。
 ボリューム シリアル番号は ****-**** です

 D:\test\dir_1 のディレクトリ

2019/02/23  02:33    <DIR>          .
2019/02/23  02:33    <DIR>          ..
2019/02/23  02:35                 0 sample_1.txt
2019/02/23  02:35                 0 sample_2.txt
2019/02/23  02:36                 0 sample_3.txt
               3 個のファイル                   0 バイト
               2 個のディレクトリ  236,924,219,392 バイトの空き領域

D:\test>
D:\test>
D:\test>dir dir_2
 ドライブ D のボリューム ラベルがありません。
 ボリューム シリアル番号は ****-**** です

 D:\test\dir_2 のディレクトリ

2019/02/23  02:35    <DIR>          .
2019/02/23  02:35    <DIR>          ..
2019/02/23  02:35                 0 sample_1.txt
2019/02/23  02:35                 0 sample_2.txt
2019/02/23  02:35                 0 sample_3.txt
               3 個のファイル                   0 バイト
               2 個のディレクトリ  236,924,219,392 バイトの空き領域

replace で比較して上書き

ディレクトリ dir_1 と dir_2 内に存在するファイルのタイムスタンプを比較して、dir_2 内のファイルよりも dir_1 内のファイルの方が新しい場合は、dir_2 のファイルを dir_1 のファイルで上書きします。

今回は、dir_1 の sample_3.txt が dir_2 の sample_3.txt を上書きするはずです。

D:\test>
D:\test>replace D:\test\dir_1\*.* D:\test\dir_2 /U
D:\test\dir_2\sample_3.txt を置き換えています

 
上記に示した通り、dir_2 の sample_3.txt が上書きされました。

上書き前

dir_1 の sample_3.txt dir_2 の sample_3.txt
2019/02/23 02:36 2019/02/23 02:35

上書き後

dir_1 の sample_3.txt dir_2 の sample_3.txt
2019/02/23 02:36 2019/02/23 02:36

 
以下は、dir を使用して dir_1 内のファイルと dir_2 内のファイルについてタイムスタンプを確認しています。

dir_2 の sample_3.txt が dir_1 の sample_3.txt で上書きされたため、タイムスタンプが同じになっていることが分かります。

D:\test>
D:\test>dir dir_1
 ドライブ D のボリューム ラベルがありません。
 ボリューム シリアル番号は ****-**** です

 D:\test\dir_1 のディレクトリ

2019/02/23  02:33    <DIR>          .
2019/02/23  02:33    <DIR>          ..
2019/02/23  02:35                 0 sample_1.txt
2019/02/23  02:35                 0 sample_2.txt
2019/02/23  02:36                 0 sample_3.txt
               3 個のファイル                   0 バイト
               2 個のディレクトリ  236,924,219,392 バイトの空き領域

D:\test>
D:\test>
D:\test>dir dir_2
 ドライブ D のボリューム ラベルがありません。
 ボリューム シリアル番号は ****-**** です

 D:\test\dir_2 のディレクトリ

2019/02/23  02:35    <DIR>          .
2019/02/23  02:35    <DIR>          ..
2019/02/23  02:35                 0 sample_1.txt
2019/02/23  02:35                 0 sample_2.txt
2019/02/23  02:36                 0 sample_3.txt
               3 個のファイル                   0 バイト
               2 個のディレクトリ  236,924,219,392 バイトの空き領域
タイトルとURLをコピーしました