Bagaimana saya bisa mengubah cap waktu pada suatu file? [duplikat]

74

Kemungkinan Duplikat:
Bagaimana mengubah cap waktu di dll atau exe?
Setara dengan Windows perintah 'sentuh' Linux?

Bagaimana saya bisa mengatur cap waktu untuk file melalui baris perintah ke tanggal tertentu?

Situasi spesifik saya adalah Windows 7.

Joseph Hansen
sumber
1
Anda mungkin harus mengklarifikasi pertanyaan Anda dan menyatakan bahwa Anda ingin memilih cap waktu yang baru. Dua jawaban saat ini menganggap Anda sedang mencari port Windows dari perintah Unix touchyang menetapkan stempel waktu file ke waktu saat ini.
William Jackson
Saya telah memeriksa Sysinternals, dan saya cukup yakin mereka tidak memiliki utilitas untuk ini. Anda harus mencoba program yang ditautkan dari superuser.com/questions/135901/…
William Jackson
@ William Jackson Changed, terima kasih untuk itu. Juga, jika itu benar-benar port dari perintah Unix touch, saya bisa menentukan tanggalnya. en.wikipedia.org/wiki/Touch_(Unix) . Ada yang salah dengan penautan otomatis, pastikan Anda mendapatkan kedua tanda kurung.
Joseph Hansen
1
Aku ... tidak percaya aku tidak pernah repot membaca man touch. Anda telah mengajari saya sesuatu yang baru.
William Jackson

Jawaban:

92

Karena jawaban William Jackson , saya menemukan pertanyaan serupa di Stack Overflow .

The jawaban yang diterima negara untuk menggunakan Powershell dan perintah ini:

$(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")

Sunting

Dua contoh:

(Yang ini dari komentar :) Setel waktu akses terakhir untuk file aaa.csvke waktu saat ini:

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

Setel waktu pembuatan file foo.txtke 24 November 2015, pukul 6:00 pagi:

$(Get-Item foo.txt).creationtime=$(Get-Date "11/24/2015 06:00 am")
Joseph Hansen
sumber
8
Variasi kecil yang bersifat rekursif dan sedikit lebih pendek, meskipun kurang dapat dibaca: "gci -rec |% {$ _. LastWriteTime = ($ _. LastAccessTime = ($ _. CreationTime = (get-date" 2011-09-14T07: 10:00 ")))}"
codybartfast
9
Untuk orang yang tidak tahu banyak tentang Powershell, Anda harus meletakkan nama file setelah Get-Item. Anda juga dapat menghilangkan string setelah Get-Date untuk mengatur atribut ke tanggal / waktu saat ini seperti perilaku default dari perintah sentuh. Akhirnya Anda bisa meneruskan kode itu sebagai argumen ke perintah PowerShell untuk menjalankannya dari file batch yang ada. Contoh:powershell $(Get-Item aaa.csv).lastwritetime=$(Get-Date)
sjbotha
1
Bagaimana jika saya ingin melakukan ini untuk setiap file dalam direktori?
CodyBugstein
Cari "Powershell every file". Anda mungkin menemukan pertanyaan seperti ini: stackoverflow.com/q/16804265/756329 dan stackoverflow.com/q/181036/756329
Joseph Hansen
4
Format tanggal dan waktu tidak sesuai perintah, tetapi sistem yang lebar (jadi, di sistem saya, itu dd / mm / yyy).
Martin Argerami
40

Lihat jawaban untuk pertanyaan ini .

Secara khusus, ini dapat dilakukan secara native dengan:

copy /b filename.ext +,,

Ini akan mengatur stempel waktu ke waktu saat ini.

Dokumentasi untuk copyperintah ada di TechNet .

Koma menunjukkan penghilangan parameter Tujuan .

William Jackson
sumber
2
Bisakah Anda jelaskan cara kerjanya? Apa itu +,,? Bagaimana saya tahu tanggal berapa diatur?
Joseph Hansen
1
@josmh Periksa tautan dokumentasi untuk detail. Cap waktu diatur ke waktu saat ini ketika Anda menjalankan perintah. Apakah Anda menyiratkan bahwa Anda ingin dapat mengubah stempel waktu menjadi waktu yang Anda pilih?
William Jackson
7
Saya tidak melihat bagaimana hal itu membantu saya memilih tanggal baru untuk file?
Joseph Hansen
Masalah utama dengan ini adalah ketika file tidak ada di direktori saat ini ... itu akan menyalin file ke direktori saat ini alih-alih "menyentuh" ​​itu di tempat.
Kasey Speakman
1
@KaseySpeakman - perintah ini bergantung pada direktori saat ini. Gunakan pushd FILEDIR, sebelum perintah dan popdsetelah
Tydaeus
25

Nirsoft untuk menyelamatkan: coba alat freeware nircmd . Ini adalah sekelompok alat yang berguna dalam satu program baris perintah kecil. Salah satu perintah memungkinkan Anda menentukan salah satu atau keduanya dari waktu yang dibuat dan waktu yang dimodifikasi , seperti ini:

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

boot13
sumber
3
Juga jika Anda ingin mentransfer waktu dari suatu file ke file lain, file clonefiletime dari fileto berfungsi paling baik!
JasonXA
Non-commandline, tetapi lebih nyaman untuk pengeditan massal: BulkFileChanger oleh Nirsoft
SaAtomic
15

Menggunakan Cygwin, untuk mengatur stempel waktu test.txt hingga 31 Januari 2000, pukul 00: 01.00:

touch -t 200001310001.00 test.txt
Joseph Hansen
sumber
Ini kembali dengan kesalahan format tanggal tidak valid.
ziggy
@ziggy pastikan Anda mendapatkan semua nol ...
Joseph Hansen
2
Ini berfungsi dengan baik bagi saya touch -t 201608221400 filenameuntuk mengaturnya menjadi 22.08.2016 14:00:00.
SebastianH
1

Lihat halaman web berikut: http://www.stevemiller.net/apps/

Win32 Console Toolbox berisi utilitas yang disebut 'touch' yang memungkinkan Anda memodifikasi waktu pada satu atau lebih file. Saya percaya ini hanya bekerja dengan format waktu AS.

Justin Pearce
sumber