コマンドプロンプトで、ファイルの内容が変わっていれば置き換える

"old.txt" と "new.txt" があり、内容が変わっていれば "new.txt" で置き換えて 変わっていなければ そのまま(タイムスタンプを変更したくない)というような 処理を行います。

つまり、次のような処理になります。

  • 内容が違う → "old.txt" を "new.txt" で置き換え
  • 内容が同じ → "new.txt" を削除

ファイルの比較は、FC コマンドを使用します。

FC コマンドは、比較した結果が「一致」の場合、正常終了、 「不一致」の場合は、異常終了となるので、それを利用して 次のようなコマンドを作成します。

C:\> fc /B "old.txt" "new.txt" > nul 2>&1 && ^
More? del "new.txt" || ^
More? move /Y "new.txt" "old.txt"

コマンドが長いので折り返していますが、1 行のコマンドです。

実行すると、結果的に "old.txt" が 1 つだけ残ります。

"old.txt" と "new.txt" が変わってるだけでなく、 "old.txt" が存在しない場合も "new.txt" で置き換えます。

ファイルを指定して実行しましたが、これを使ってバッチ処理を作れば フォルダ単位で同じ名前のファイルを比較して置き換え、といったこともできます。 サーバ間の移動などを行うときに、最新版のファイルだけを移動して、既存のファイルは タイムスタンプを更新したくない、といったときなどに使えそうです。

Google サイト内検索

Amazonアソシエイト