サイトアイコン しらかわるーむ

開発者必見!タイムスタンプを壊さずにファイルをコピーする裏ワザ

「あれ?さっきコピーしただけなのに、ファイルの『更新日時』が今日の日付に変わってる…」 こんな経験、ありませんか?

特にバックアップを取ったあとや、フォルダごと別のドライブに移したあと。本当は「いつ作ったか」「いつ直したか」が大事な情報なのに、コピーしただけで日付がリセットされてしまうと、どれが新しいファイルなのか分からなくなってしまいますよね。

実はこれ、Windowsの「コピー」のちょっとしたクセが原因なんです。そして、ちゃんとした方法を知っていれば、更新日時を1秒もズラさずにコピーすることができます。

この記事では、マウス操作の標準コピーから、ちょっとカッコいいコマンドまで、「更新日時を狙い通りに保つ」テクニックをまるっと紹介します。コピペで真似できるので、身構えなくて大丈夫ですよ。

スポンサーリンク

この記事のポイント

  1. 普通のコピーで日付が変わる原因がスッキリ分かる
  2. robocopyとPowerShellで日時を確実に保てる
  3. バックアップの差分判定が乱れなくなる

6分11秒でわかるまとめ動画

迷ったら「robocopy /DCOPY:DAT」が正解!

先に答えを言ってしまいます。

更新日時を変えずにフォルダごとコピーしたいなら、Windowsに最初から入っている robocopy(ロボコピー) というコマンドを使うのが一番確実です。

robocopy "コピー元のフォルダ" "コピー先のフォルダ" /E /DCOPY:DAT

これだけです。/DCOPY:DAT という呪文みたいなオプションが、フォルダの更新日時までしっかり持って行ってくれます。

「コマンドはちょっと怖い…」という人は、後で紹介する TeraCopy みたいな無料ソフトを使う手もあります。まずは「日付を守るならコピー方法を選ぶ必要がある」と覚えておけばOKです。

なぜ普通のコピーだと日付が変わるの?

ここ、ちょっと不思議ですよね。一緒に考えてみましょう。

まず大前提として、ファイルには3つの日付があります。

日付の種類意味
作成日時そのファイルが「生まれた」日
更新日時中身を最後に「直した」日
アクセス日時最後に「開いた」日

このうち、運用でいちばん大事なのが 更新日時 です。ソートでも一番よく使いますしね。

で、ここからが本題。Windowsでマウスを使って普通にコピーすると…

そう、ファイルは無事でも、フォルダの日付がリセットされちゃうんです。Windowsではファイルの更新日時は維持されるけれど、フォルダの場合は作成日時だけでなく更新日時まで変更されてしまう、という仕様なんですね。

なぜかというと、Windowsの内部処理では、フォルダをコピーした瞬間は元の日付を保っているのに、その中にファイルを書き込んだ時点で「あ、今このフォルダ書き換えたな」と判断して、日付を更新してしまうから…らしいです。気が利きすぎて、逆に困るパターンですね。

これが地味に厄介で、バックアップソフトの中には、この フォルダの差分(変わった・変わってない) を日付で判断するものがあります。日付が全部今日になってしまうと「あれ、全部変わったの?」と勘違いして、ムダにコピーが走ったり、履歴がぐちゃぐちゃになったりするんです。

方法別・更新日時の守り方

じゃあ具体的にどうするか。目的別に3つ紹介します。

■ 方法①:robocopy(一番おすすめ・追加インストール不要)

robocopyはWindowsに標準で入っている、高機能なコピーコマンドです。やり方はこう。

  1. スタートメニューの検索で「cmd」と打って、コマンドプロンプトを開く
  2. 次のように入力してEnterキーをポンッとPush

robocopy "D:\写真" "G:\backup\写真" /E /DCOPY:DAT

オプションの意味はこんな感じです。

オプション役割
/E空っぽのフォルダも含めて、中身ぜんぶコピー
/DCOPY:DATフォルダの「データ・属性・日時」を維持する

ポイントは /DCOPY:DATフォルダのタイムスタンプを維持するために、robocopyには必ず /DCOPY:DAT オプションを付けるのがおすすめとされています。シンプルに /DCOPY:T(Tはタイムスタンプの意味)でもフォルダの日時は守られますよ。

実際、このオプションを付けて実行すると、エクスプローラーで見てもタイムスタンプが更新されず、そのままコピーできることが確認されています。

■ 方法②:PowerShellで日付を「上書き直し」する

コピーした後に「やっぱり日付がズレてた…」という時の応急処置です。PowerShellで、好きな日付に手動で書き戻せます。

Set-ItemProperty "C:\work\test.txt" -Name LastWriteTime -Value "2026/06/30 12:00:00"

LastWriteTime が更新日時のことです。<cite index="16-1">作成日時を変えたいなら、CreationTime に置き換えればOK</cite>です。

フォルダの中身を一気にそろえたい時はこう。

Get-ChildItem "C:\納品物" -Recurse -File | ForEach-Object { Set-ItemProperty $_.FullName -Name LastWriteTime -Value "2026/06/30 12:00:00" }

納品物の日付をピシッとそろえたい時なんかに便利です。

■ 方法③:無料ソフトに頼る(コマンドが苦手な人向け)

「黒い画面はどうしても無理!」という人は、TeraCopyFastCopy といった無料ソフトもあります。TeraCopyは日時情報を維持したままコピーでき、右ドラッグにも対応していて使いやすいと紹介されています。マウスで完結するので気楽です。

メリット・デメリット

いい面と注意点を両方お伝えします。

■ robocopyのメリット

■ robocopyのデメリット・注意点

…と、ここで反対の立場でも考えてみましょう。「全部きれいに毎回コピーしたいんだけど?」という人もいますよね。その場合は差分コピーが逆に邪魔になります。そういう時はソフト(TeraCopy等)で毎回まるごとコピーする方が向いている、というわけです。目的次第で使い分けるのが賢いやり方ですね。

ま、ここまで書いて僕は思いました。

「コマンドでカッコつけるより、TeraCopy使っちゃえば???」

ってね。

楽なのが一番です。

最後に

「コピーしたら日付が変わる」って、地味なんだけど一回ハマるとずっとモヤモヤする問題なんですよね。私も昔、バックアップの中身が全部同じ日付になってて「どれが最新…?」と頭を抱えたクチです。

でも、今日の内容を押さえておけば大丈夫。

タイムスタンプは、ファイルの「歴史」そのものです。それを正しく扱えるようになると、バックアップも履歴管理も、ぐっと信頼できるものになります。

まずは大事じゃないテスト用フォルダで、robocopyを一回試してみてください。「おお、日付が変わってない!」というあの小さな感動、ぜひ味わってみてくださいね。

白川秋

ではでは、参考までに

モバイルバージョンを終了