Microsoft Office

2つのフォルダ内にある全てのファイルのタイムスタンプを比較する (フリーソフトが使えない場合)

ゼノン

私はAWSで仕事してるので、下手なフリーソフトとか入れられません。なのでこの手の仕事は基本全部手動で行うことになります。何度か行うものであればこのようにExcel等で比較用のマクロ等作成していますが、やや忘れがちなので備忘録です。

//テスト用のサンプルフォルダは以下の構成
D:
├─T-01
│  └─N
│          N0001
│          N0002
│          N0003
│
└─T-02
    ├─M
    │      M0001
    │      M0002
    │      M0003
    │
    └─N
            N0001
            N0002
            N0003

1. Dirでフォルダ内のファイル名を取得

コマンドプロンプトを起動し、以下コマンドを入力。フォルダパスは該当のフォルダを開いたエクスプローラーのアドレスバーに「cmd」と入力し起動することで下記のように省くことが出来る。

dir /s

//ファイル形式が決まっている場合は以下のように指定すると<DIR>が表示されなくて楽
dir *.txt /s

2. データを整理

出力された全データをテキストエディタなどにコピーし、ファイル名以外の部分(ディレクトリ名とか1個のファイルうんたらかんたら)の部分を削除。

参考マクロ

フォルダ数・ファイル数が多すぎて手動で行うのが大変な場合は以下私が10分で作成したマクロを実行。上記でコピーした一覧のデータを適当なExcelのA1に貼り付け。問答無用で1000行繰り返し、セルの値のはじめ4桁が数値以外の場合に行を削除する。

Sub a()
    Dim a As String
    Dim b As String
    Range("A1").Select

    For i = 1 To 1000
        a = ActiveCell.Value
        b = Left(a, 4)
        
        If IsNumeric(b) Then
            ActiveCell.Offset(1, 0).Select
        Else
            ActiveCell.Rows.Dalete
        End If
    Next
End Sub

3. 比較用のExcelシートを用意

2.で作成した2つのデータをExcelシートのA列とB列に貼り付け。

日付のみを抽出するように関数を設定。以下左から17桁の文字を取得する関数のため、これをC以降の列に記述。

//C列
=LEFT(A3,17)
//D列
=LEFT(B3,17)

C列とD列が同じ場合はTRUEと表示される関数。

//E列
=EXACT(C3,D3)
ABOUT ME
ゼノン / Xenonhyx (管理人)
愛知県出身。趣味は自作PCとゲーム。 略歴:エンジニア兼マーケター→フリーライター→エンジニア

COMMENT

メールアドレスが公開されることはありません。