Windowsコマンドプロンプトでファイルの更新日時を一括変更する方法

Windows標準のcmd.exeにはtouchはありません。追加ツールなしなら、cmdからWindows PowerShellを呼び出してLastWriteTimeを変更できます。最初に対象一覧と元の日時を保存し、テスト用コピーで確認してください。更新日時を変えると同期・増分バックアップの判定へ影響するため、監査資料やシステムファイルを対象にしないでください。

目次

追加ツールなし:cmdから1ファイルを変更

powershell.exe -NoProfile -Command "$f=Get-Item -LiteralPath 'C:\example\file.txt' -ErrorAction Stop; $f.LastWriteTime=[datetime]::new(2024,6,10,10,0,0); $f.Refresh(); $f | Select-Object FullName,LastWriteTime"

例は実行PCのローカル時刻で2024年6月10日10時に設定します。パスと日時を目的に合わせて置き換えます。ファイルの本文は変更せず、既存ファイルがない場合はエラーになります。以下のPowerShell欄はcmdへ直接貼る構文とは異なるので、実行場所を区別してください。

Windows環境でファイルの更新日時を一括で変更する方法について、コマンドプロンプトを使用して詳しく解説します。システム管理者やITエンジニアにとって、ファイル管理を効率化するための重要なスキルです。このガイドでは、基本操作から応用例までをカバーし、実際の業務に役立つ知識を提供します。

コマンドプロンプトの基本操作

コマンドプロンプトはWindowsの強力なコマンドラインインターフェースです。ここでは、コマンドプロンプトを開き、基本操作を学ぶ手順を説明します。

コマンドプロンプトの起動方法

コマンドプロンプトを起動するには、スタートメニューから「cmd」と入力し、エンターキーを押すだけです。また、右クリックして「管理者として実行」を選択することで、管理者権限でコマンドプロンプトを開くこともできます。

基本的なコマンドの使い方

コマンドプロンプトでの基本的なコマンド操作を紹介します。

ディレクトリの移動

ディレクトリを移動するには、「cd」コマンドを使用します。例えば、「cd C:\Users」でユーザーディレクトリに移動できます。

ディレクトリの内容を表示

ディレクトリの内容を表示するには、「dir」コマンドを使用します。このコマンドで現在のディレクトリ内のファイルとフォルダの一覧を表示できます。

基本コマンドの例

以下にいくつかの基本コマンドの例を示します。

ディレクトリの作成

新しいディレクトリを作成するには、「mkdir ディレクトリ名」を使用します。

ファイルの削除

ファイルを削除するには、「del ファイル名」を使用します。

ファイルのコピー

ファイルをコピーするには、「copy 元ファイル名 コピー先ファイル名」を使用します。

これらの基本操作を理解することで、コマンドプロンプトでの作業がスムーズに行えるようになります。

ファイルの更新日時とは

ファイルの更新日時は、ファイルが最後に変更された日時を示す重要なメタデータです。この情報は、ファイルの管理や追跡において非常に有用です。

更新日時の定義

LastWriteTimeは最終書き込み時刻を表すメタデータです。作成日時や最終アクセス日時とは別で、プログラムから書き換えられるため、内容が変更された事実を単独で証明するものではありません。ファイルシステムによる精度差もあります。

更新日時の重要性

更新日時は、次のような理由で重要です。

変更履歴の追跡

更新日時を確認することで、ファイルがいつ最後に変更されたかを知ることができ、変更履歴の追跡が容易になります。

バックアップと同期

ファイルのバックアップや同期プロセスでは、更新日時を基に新しいバージョンを判断します。これにより、効率的なデータ管理が可能となります。

監査とセキュリティ

システム監査やセキュリティ対策として、更新日時を確認することで、予期せぬ変更や不正なアクセスの痕跡を見つけることができます。

更新日時の確認方法

更新日時を確認するための方法には、ファイルプロパティを表示する方法と、コマンドを使用する方法があります。

ファイルプロパティから確認する

エクスプローラーでファイルを右クリックし、「プロパティ」を選択すると、更新日時を含むファイルの詳細情報を確認できます。

コマンドプロンプトから確認する

コマンドプロンプトで「dir」コマンドを使用すると、ファイルの更新日時が表示されます。例えば、「dir /T:W」でファイルの更新日時を表示できます。

これらの知識を活用することで、ファイルの更新日時を正確に把握し、適切に管理することができます。

ファイル更新日時を確認するコマンド

ファイルの更新日時を確認するには、コマンドプロンプトでいくつかのコマンドを使用することができます。ここでは、代表的なコマンドを紹介します。

dirコマンドを使用する

「dir」コマンドは、ディレクトリ内のファイルやフォルダの一覧を表示する基本的なコマンドです。このコマンドにオプションを追加することで、ファイルの更新日時を確認することができます。

基本的な使い方

以下のコマンドを入力すると、現在のディレクトリ内のファイルとフォルダの一覧が表示されます。

dir

更新日時を表示するオプション

ファイルの更新日時を表示するために、「/T:W」オプションを使用します。例えば、以下のコマンドを入力すると、更新日時が一覧表示されます。

dir /T:W

PowerShellを使用する方法

Windows PowerShellを使用することで、より詳細な情報を取得することができます。特に、「Get-Item」コマンドレットを使用すると、ファイルのプロパティを取得できます。

基本的な使い方

以下のコマンドをPowerShellに入力すると、指定したファイルの詳細情報が表示されます。

Get-Item -LiteralPath "ファイルのパス" | Select-Object LastWriteTime

このコマンドは、指定したファイルの更新日時(LastWriteTime)を表示します。

詳細な情報の表示

ディレクトリ内のすべてのファイルの更新日時を一覧で表示するには、以下のPowerShellコマンドを使用します。

Get-ChildItem -LiteralPath "ディレクトリのパス" -File | Select-Object Name, LastWriteTime

このコマンドは、指定したディレクトリ内のすべてのファイルとその更新日時を表示します。

これらのコマンドを活用することで、ファイルの更新日時を簡単に確認し、管理することができます。

更新日時を変更する方法

ファイルの更新日時を変更するには、WindowsのコマンドプロンプトやPowerShellを使用する方法があります。ここでは、それぞれの方法について具体的に説明します。

PowerShellを使用して更新日時を変更する

PowerShellは、Windowsの強力なスクリプト言語であり、ファイルのプロパティを簡単に変更することができます。

基本的なコマンド

以下のコマンドを使用して、ファイルの更新日時を変更できます。

(Get-Item -LiteralPath "ファイルのパス").LastWriteTime = "新しい日時"

例:

(Get-Item "C:\path\to\file.txt").LastWriteTime = "2024-06-10 10:00:00"

このコマンドは、指定したファイルの更新日時を2024年6月10日10時に設定します。

コマンドプロンプトで更新日時を変更する

コマンドプロンプトでは、「touch」コマンドを使用して更新日時を変更することができます。Windowsには標準で「touch」コマンドが含まれていないため、外部ツールを使用する必要があります。

「touch」コマンドのインストール

以降のtouch例はGNU coreutils互換版が既に導入されている環境向けです。ツールの出所・版・ヘルプを確認し、古い配布物をこの操作のためだけに追加する必要はありません。Windows標準機能だけを使う場合は冒頭のPowerShell方式を選びます。

「touch」コマンドの使用方法

インストール後、以下のコマンドを使用してファイルの更新日時を変更します。

touch -m -c -t YYYYMMDDHHMM.SS "ファイルのパス"

例:

touch -m -c -t 202406101000.00 "C:\path\to\file.txt"

このコマンドは、指定したファイルの更新日時を2024年6月10日10時に設定します。

バッチファイルを使用した一括変更

複数のファイルの更新日時を一括で変更するには、バッチファイルを使用することが便利です。

バッチファイルの作成

以下の内容でバッチファイルを作成し、実行することで、特定のフォルダ内のすべてのファイルの更新日時を変更できます。

@echo off
set target_date=202406101000.00
for %%f in ("C:\path\to\folder\*.*") do touch -m -c -t %target_date% "%%f"

このスクリプトは、指定したフォルダ内のすべてのファイルの更新日時を2024年6月10日10時に設定します。

これらの方法を使用することで、ファイルの更新日時を効率的に変更することができます。

バッチファイルの作成方法

複数のファイルの更新日時を一括で変更するためには、バッチファイルを作成して実行するのが便利です。ここでは、バッチファイルの基本的な作成方法と具体的な例を紹介します。

バッチファイルの基本構造

バッチファイルは、複数のコマンドを順番に実行するスクリプトファイルです。拡張子は「.bat」とし、任意のテキストエディタで作成できます。

バッチファイルの作成手順

  1. 任意のテキストエディタ(例:メモ帳)を開きます。
  2. 以下のようなコマンドを入力します。
  3. ファイルを「.bat」拡張子で保存します。

例:

@echo off
set target_date=202406101000.00
for %%f in ("C:\path\to\folder\*.*") do touch -m -c -t %target_date% "%%f"
pause

特定フォルダ内の全ファイルの更新日時を一括変更する

上記のバッチファイルの例を使うと、特定フォルダ内の全ファイルの更新日時を一括で変更できます。以下にその手順を示します。

ステップ1: ターゲットフォルダを指定する

「C:\path\to\folder」を実際のターゲットフォルダのパスに変更します。

ステップ2: 日時を指定する

「set target_date=202406101000.00」の部分を変更したい日時に合わせて修正します。

ステップ3: バッチファイルを保存する

編集した内容を「update_timestamps.bat」といった名前で保存します。

ステップ4: バッチファイルを実行する

保存したバッチファイルをダブルクリックして実行します。コマンドプロンプトが開き、指定されたフォルダ内の全ファイルの更新日時が変更されます。

複数のフォルダを対象にする方法

複数のフォルダ内のファイルを対象にする場合は、以下のようにバッチファイルを編集します。

@echo off
set target_date=202406101000.00
for %%f in ("C:\folder1\*.*" "C:\folder2\*.*") do touch -m -c -t %target_date% "%%f"
pause

このスクリプトでは、「C:\folder1」と「C:\folder2」内の全ファイルの更新日時を変更します。

バッチファイルを使用することで、手作業でファイルの更新日時を変更する手間を省き、作業の効率化を図ることができます。

実用例:特定フォルダ内の全ファイルの更新日時を一括変更

ここでは、特定のフォルダ内にあるすべてのファイルの更新日時を一括で変更する具体的な手順を紹介します。以下の手順に従って実行してください。

対象フォルダを決める

まず、更新日時を変更したいファイルが格納されているフォルダを決めます。ここでは例として、「C:\example\folder」を使用します。

必要なツールの準備

touch例は既に承認されたGNU互換ツールがある場合だけ使います。-mは更新日時だけ、-cは対象が存在しない場合に新規作成しない指定です。通常のtouchはアクセス日時も変えるため、本記事では両方を明示します。

ツールの仕様を確認

GNU互換版のtouch –helpで -m、-c、-tの意味を確認します。未導入なら追加せずPowerShell方式で進めます。

バッチファイルの作成

以下の内容でバッチファイルを作成します。この例では、特定フォルダ内のすべてのファイルの更新日時を2024年6月10日10時に変更します。

@echo off
set target_date=202406101000.00
for %%f in ("C:\example\folder\*.*") do touch -m -c -t %target_date% "%%f"
pause

バッチファイルの内容説明

  • @echo off: コマンドの実行内容を表示しないようにします。
  • set target_date=202406101000.00: 変更したい日時を設定します。
  • for %%f in ("C:\example\folder\*.*") do touch -m -c -t %target_date% "%%f": フォルダ内のすべてのファイルの更新日時を設定した日時に変更します。
  • pause: スクリプトの実行が完了したら、一時停止します。

バッチファイルの実行

  1. 作成したバッチファイル(例:「update_timestamps.bat」)を保存します。
  2. バッチファイルをダブルクリックして実行します。

これで、指定したフォルダ内のすべてのファイルの更新日時が一括で変更されます。

結果の確認

実行後、コマンドプロンプトで以下のコマンドを使用して、ファイルの更新日時が正しく変更されているか確認します。

dir /T:W "C:\example\folder"

このコマンドで、フォルダ内のファイルの更新日時が表示されます。すべてのファイルの更新日時が設定した日時に変更されていることを確認してください。

この手順を活用することで、特定フォルダ内のファイルの更新日時を効率的に一括変更することができます。

応用例:特定の拡張子ファイルのみの更新日時変更

特定の拡張子を持つファイルのみを対象にして、更新日時を一括変更する方法について解説します。例えば、.txtファイルだけを変更する場合の手順を紹介します。

対象ファイルの選定

更新日時を変更したい特定の拡張子を持つファイルが格納されているフォルダを決めます。ここでは例として、「C:\example\folder」を使用し、.txtファイルを対象にします。

バッチファイルの作成

以下の内容でバッチファイルを作成します。この例では、特定フォルダ内のすべての.txtファイルの更新日時を2024年6月10日10時に変更します。

@echo off
set target_date=202406101000.00
for %%f in ("C:\example\folder\*.txt") do touch -m -c -t %target_date% "%%f"
pause

バッチファイルの内容説明

  • @echo off: コマンドの実行内容を表示しないようにします。
  • set target_date=202406101000.00: 変更したい日時を設定します。
  • for %%f in ("C:\example\folder\*.txt") do touch -m -c -t %target_date% "%%f": フォルダ内のすべての.txtファイルの更新日時を設定した日時に変更します。
  • pause: スクリプトの実行が完了したら、一時停止します。

バッチファイルの実行

  1. 作成したバッチファイル(例:「update_txt_timestamps.bat」)を保存します。
  2. バッチファイルをダブルクリックして実行します。

これで、指定したフォルダ内のすべての.txtファイルの更新日時が一括で変更されます。

結果の確認

実行後、コマンドプロンプトで以下のコマンドを使用して、.txtファイルの更新日時が正しく変更されているか確認します。

dir /T:W "C:\example\folder\*.txt"

このコマンドで、フォルダ内の.txtファイルの更新日時が表示されます。すべての.txtファイルの更新日時が設定した日時に変更されていることを確認してください。

応用例:異なる拡張子ファイルを同時に変更する

複数の拡張子を持つファイルを同時に変更したい場合、バッチファイルを以下のように編集します。

@echo off
set target_date=202406101000.00
for %%f in ("C:\example\folder\*.txt" "C:\example\folder\*.log") do touch -m -c -t %target_date% "%%f"
pause

このスクリプトでは、.txtファイルと.logファイルの更新日時を一括で変更します。

これらの応用方法を活用することで、特定の拡張子を持つファイルのみを効率的に管理し、更新日時を一括変更することができます。

PowerShellで確認してから一括変更

次はPowerShellで実行します。直下の.txtだけが対象で、再帰・隠しファイルは含めません。最初はapplyをfalseのまま一覧を確認し、元の日時を別途保存してからtrueへ変更します。

$folder = 'C:\example\folder'
$target = [datetime]::new(2024,6,10,10,0,0)
$apply = $false
$files = @(Get-ChildItem -LiteralPath $folder -File -Filter '*.txt' -ErrorAction Stop)
$files | Select-Object FullName, LastWriteTime, LastWriteTimeUtc
if ($apply) {
    foreach ($file in $files) {
        try {
            $file.LastWriteTime = $target
            $file.Refresh()
            $file | Select-Object FullName, LastWriteTime
        } catch {
            Write-Error "変更失敗: $($file.FullName) : $($_.Exception.Message)"
            break
        }
    }
}

途中失敗時も既に変更した分は自動で戻りません。変更前記録と結果を照合します。touchバッチのAttemptingログは試行記録で、成功の証明ではありません。

更新日時変更時の注意点

ファイルの更新日時を変更する際には、いくつかの注意点があります。これらの注意点を理解しておくことで、作業中のトラブルを防ぎ、安全に操作を行うことができます。

システムファイルや重要なファイルの変更

システムファイルや重要なファイルの更新日時を変更する場合、システムの動作に影響を与える可能性があります。特に、OSのファイルやアプリケーションの依存ファイルは慎重に扱う必要があります。

バックアップの重要性

更新日時を変更する前に、必ず対象ファイルのバックアップを取っておきましょう。万が一のトラブル発生時に、元の状態に戻すことができます。

権限の確認

ファイルの更新日時を変更するためには、対象ファイルに対する適切な権限が必要です。特にシステムファイルや他のユーザーのファイルを変更する場合、管理者権限が求められることがあります。

管理者として実行

通常権限で自分が管理するテスト用ファイルから試します。アクセス拒否を理由に一律昇格したり所有権やACLを変更したりせず、対象と権限を確認してください。

ファイルのタイムスタンプ整合性

ファイルの作成日時、アクセス日時、更新日時の整合性が保たれていることが重要です。不整合が発生すると、ファイルの管理やバックアップに問題が生じることがあります。

整合性を保つための注意点

  • 作成日時・アクセス日時は別の情報なので、見た目を揃える目的だけで同時変更しません。元の値を記録して、必要なLastWriteTimeだけを扱います。
  • コマンドプロンプトやスクリプトで一括変更する場合、誤って不適切な日時に設定しないように注意します。

変更のログを保持する

更新日時を変更する操作を行った記録を保持しておくと、後で問題が発生した際に原因を特定しやすくなります。

ログの取り方

  • バッチファイルの実行結果をログファイルに保存する。
  • 変更前と変更後のファイルリストを記録しておく。

例:

@echo off
set target_date=202406101000.00
for %%f in ("C:\example\folder\*.txt") do (
    echo Attempting %%f to %target_date% >> update_log.txt
    touch -m -c -t %target_date% "%%f"
)
pause

これらの注意点を守ることで、ファイルの更新日時変更作業を安全かつ効果的に行うことができます。

まとめ

本記事では、Windowsのコマンドプロンプトを使用してファイルの更新日時を一括で変更する方法について詳しく解説しました。コマンドプロンプトとPowerShellの基本操作から、具体的なコマンドの使い方、実用例や応用例、さらには変更時の注意点までを包括的にカバーしました。

ファイルの更新日時を管理することは、システム管理やデータ整理の重要な部分です。正しい方法と手順を踏むことで、効率的かつ安全に作業を進めることができます。特に、バッチファイルを使用することで、複数ファイルの一括処理が可能となり、業務の効率化に寄与します。

最後に、ファイルの更新日時を変更する際には、バックアップを忘れずに取り、権限や整合性に注意することが重要です。これらのポイントを押さえて、ファイル管理のスキルを高め、トラブルを防ぐことができます。

仕様:GNU touch/LastWriteTime/Get-ChildItem。例は利用環境で実行検証していません。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次