ファイルのタイムスタンプを変更するにはどうすればよいですか?[複製]


74

可能な重複:
dllまたはexeのタイムスタンプを変更する方法は?
Linuxコマンド「touch」に相当するWindows

コマンドラインを使用して特定の日付にファイルのタイムスタンプを設定するにはどうすればよいですか?

私の特定の状況はWindows 7です。


1
質問を明確にし、新しいタイムスタンプを選択することを明記する必要があります。現在の2つの答えtouchは、ファイルのタイムスタンプを現在の時刻に設定するUnixコマンドのWindowsポートを探していることを前提としています。
ウィリアムジャクソン

私はSysinternalsを調べましたが、このためのユーティリティがないと確信しています。superuser.com/questions/135901/
William Jackson

@William Jacksonが変わりました、ありがとう。また、それが本当にUnixコマンドのポートであればtouch、日付を指定できます。en.wikipedia.org/wiki/Touch_(Unix)。ただし、自動リンクに問題があります。両方の括弧を取得してください。
ジョセフハンセン

1
私は...読むのに迷惑をかけたことは信じられないman touch。あなたは私に何か新しいことを教えてくれました。
ウィリアムジャクソン

回答:


92

ためにウィリアム・ジャクソンの答えは、私が見つかりました。スタックオーバーフローに同様の質問を

受け入れ答えの状態PowerShellを使用すると、これらのコマンド:

$(Get-Item ).creationtime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
$(Get-Item ).lastaccesstime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")
$(Get-Item ).lastwritetime=$(Get-Date "mm/dd/yyyy hh:mm am/pm")

編集

2つの例:

(これはコメントからのものです:)ファイルの最終アクセス時刻をaaa.csv現在の時刻に設定します。

$(Get-Item aaa.csv).lastwritetime=$(Get-Date)

ファイルの作成時間をfoo.txt2015年11月24日の午前6時に設定します。

$(Get-Item foo.txt).creationtime=$(Get-Date "11/24/2015 06:00 am")

8
再帰的で少し短くなりますが、読みやすさは低下しますが、「gci -rec |%{$ _。lastWriteTime =($ _。lastAccessTime =($ _。creationTime =(get-date "2011-09-14T07: 10:00 ")))}"
codybartfast

9
Powershellについてあまり知らない人のために、Get-Itemの後にファイル名を付ける必要があります。また、Get-Dateの後の文字列を省略して、タッチコマンドの既定の動作のように、属性を現在の日付/時刻に設定することもできます。最後に、そのコードをpowershellコマンドの引数として渡して、既存のバッチファイルから実行するだけで済みます。例:powershell $(Get-Item aaa.csv).lastwritetime=$(Get-Date)
sjbotha

1
ディレクトリ内のすべてのファイルに対してこれを実行したい場合はどうすればよいですか?
-CodyBugstein

「Powershell every file」を検索します。あなたはこれらのような質問を見つけるかもしれない:stackoverflow.com/q/16804265/756329stackoverflow.com/q/181036/756329
ジョセフ・ハンセン

4
日付と時刻の形式はコマンドによるものではなく、システム全体のものです(したがって、私のシステムではdd / mm / yyyでした)。
マーティンアルジェラミ

40

この質問への回答をご覧ください。

具体的には、これは次の方法でネイティブに実行できます。

copy /b filename.ext +,,

これにより、タイムスタンプが現在の時刻に設定されます。

copyコマンドのドキュメントはTechNetにあります。

コンマは、Destinationパラメーターの省略を示します。


2
それがどのように機能しているのか説明できますか?何+,,ですか?設定されている日付を知るにはどうすればよいですか?
ジョセフ・ハンセン

1
@josmh詳細については、ドキュメントのリンクを確認してください。タイムスタンプは、コマンドを実行すると現在の時刻に設定されます。タイムスタンプを任意の任意の時間に変更できるようにしたいということを意味していますか?
ウィリアムジャクソン

7
ファイルの新しい日付を選択するのにどのように役立つかわかりませんか?
ジョセフ・ハンセン

これの主な問題は、ファイルが現在のディレクトリにない場合です...ファイルを所定の場所に「タッチ」するのではなく、現在のディレクトリにコピーします。
ケイシースピークマン

1
@KaseySpeakman-このコマンドは、現在のディレクトリにあることに依存しています。pushd FILEDIRコマンドを使用する前に、コマンドの前とpopd後に
Tydaeus

25

Nirsoftの助け:フリーウェアツールnircmdを試してください。これは、1つの小さなコマンドラインプログラムに含まれる便利なツールの集まりです。コマンドの1つを使用すると、次のように作成時刻変更時刻のいずれかまたは両方を指定できます。

nircmd.exe setfiletime "c:\ temp \ myfile.txt" "24-06-2003 17:57:11" "22-11-2005 10:21:56"


3
また、あるファイルから別のファイルに時間を転送したい場合、filetoのclonefiletime fileが最適です!
JasonXA

コマンドラインではないが、一括編集に便利:BulkFileChanger by Nirsoft
SaAtomic

15

Cygwinを使用して、test.txtのタイムスタンプを2000年1月31日の00:01.00に設定します。

touch -t 200001310001.00 test.txt

これは、無効な日付形式エラーで戻ります。
ジギー

@ziggyあなたは...すべてゼロを得ることを確認
ジョセフ・ハンセン

2
これはtouch -t 201608221400 filename、22.08.2016 14:00:00に設定するのに完璧に機能しました。
SebastianH

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.