どうもこんにちは。システムエンジニアのえむーです。
私が担当する回のブログ記事は「私が実際に使った、業務で使える小技」を中心に書いていこうと思ってます。
この記事が誰かのお役に立てれば幸いです。
今回は「WINDOWS上のファイルの作成日時を操作する方法」について書こうと思います。
この小技を使った場面
先日、「対象フォルダ内に存在するファイルの内、ファイルの作成日時が指定した期限を過ぎている場合、削除する」プログラムを書いてました。
動作確認のために、削除対象になる作成日時のファイルをコピーして、対象フォルダに置いて、プログラムを実行したのですが、ファイルが削除されない。。
「なんでかなー」と思ってファイルの作成日時を見ると、
作成日時が対象フォルダに置いた時間になってました。。
コピーは作成日時までコピーしてくれないんですね。
更新日時はコピーしてるのに。
「テストを行うために、ファイルの作成日時を自由に操作したい。」
そういった状況の中で使ったのが今回紹介する小技です。
WINDOWS上のファイルの作成日時を操作する方法
Windows PowerShellを使用して行います。
Windows PowerShellプロンプトで以下のコマンドを実行します。
1 |
New-Item C:\tmp\test.txt -itemType File;$file = Get-Item -LiteralPath C:\tmp\test.txt;$file.CreationTime=Get-Date '2016/11/15 00:00:00' |
これは「ファイルを新規作成した後、ファイルの作成日時を任意の値で変更する」コマンドです。
このコマンドは以下の3つの要素に分解できます。
①新規ファイル作成
New-Item <ファイルフルパス> -itemType File;
<ファイルフルパス>に新規作成したいファイルフルパスを指定します。実行すると、新規ファイルが作成されます。
②変数格納
$<変数名> = Get-Item -LiteralPath <ファイルフルパス>;
<変数名>に任意の変数名を指定します。
<ファイルフルパス>に作成日時を変更したいファイルのフルパスを指定します。
実行すると変数にファイル情報が格納されます。
③ファイルの作成日時変更
$<変数名>.CreationTime=Get-Date ‘<作成日時>‘
<変数名>に②で設定した変数名を指定します。
<作成日時>に作成日時に設定したい時間を指定します。
実行するとファイルの作成日時が指定した値に変更されます。
Windows上でファイルの作成日時を操作する機会があれば使ってみてください。