Làm cách nào để thay đổi dấu thời gian trên một tệp? [bản sao]


74

Có thể trùng lặp:
Làm thế nào để sửa đổi dấu thời gian trong một dll hoặc exe?
Windows tương đương với lệnh Linux 'chạm'?

Làm cách nào tôi có thể đặt dấu thời gian cho một tệp qua dòng lệnh thành một ngày cụ thể?

Tình hình cụ thể của tôi là Windows 7.


1
Bạn có thể nên làm rõ câu hỏi của bạn và nói rằng bạn muốn chọn dấu thời gian mới. Hai câu trả lời hiện tại giả định rằng bạn đang tìm kiếm một cổng Windows của lệnh Unix touchđặt dấu thời gian của tệp theo thời gian hiện tại.
William Jackson

Tôi đã xem qua Sysiternals và tôi khá chắc chắn rằng họ không có tiện ích cho việc này. Bạn nên thử các chương trình được liên kết đến từ superuser.com/questions/135901/ trộm
William Jackson

@William Jackson đã thay đổi, cảm ơn vì điều đó. Ngoài ra, nếu đó thực sự là một cổng của lệnh Unix touch, tôi có thể chỉ định ngày. vi.wikipedia.org/wiki/Touch_(Unix) . Có gì đó không ổn với liên kết tự động mặc dù, hãy đảm bảo bạn nhận được cả hai dấu ngoặc đơn.
Joseph Hansen

1
Tôi ... không thể tin rằng tôi không bao giờ bận tâm để đọc man touch. Bạn đã dạy tôi một cái gì đó mới.
William Jackson

Câu trả lời:


92

Do câu trả lời của William Jackson , tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow .

Các câu trả lời được chấp nhận quốc gia sử dụng Powershell và các lệnh này:

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

Biên tập

Hai ví dụ:

(Cái này là từ các bình luận :) Đặt thời gian truy cập cuối cùng cho một tệp aaa.csvthành thời gian hiện tại:

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

Đặt thời gian tạo tệp foo.txtvào ngày 24 tháng 11 năm 2015, lúc 6:00 sáng:

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

8
Một biến thể nhỏ có tính đệ quy và ngắn hơn một chút, mặc dù ít đọc hơn: "gci -rec |% {$ _. LastWriteTime = ($ _. LastAccessTime = ($ _. CreationTime = (get-date" 2011-09-14T07: 10:00 ")))}"
codybartfast

9
Đối với những người không biết nhiều về Powershell, bạn phải đặt tên tệp sau Get-Item. Bạn cũng có thể bỏ qua chuỗi sau Ngày nhận để đặt thuộc tính thành ngày / giờ hiện tại như hành vi mặc định của lệnh cảm ứng. Cuối cùng, bạn có thể truyền mã đó làm đối số cho lệnh powershell để nó chỉ thực thi mã đó từ tệp bó hiện có. Ví dụ:powershell $(Get-Item aaa.csv).lastwritetime=$(Get-Date)
sjbotha

1
Nếu tôi muốn làm điều này cho mọi tệp trong một thư mục thì sao?
CodyBugstein

Tìm kiếm "Powershell mỗi tập tin". Bạn có thể tìm thấy những câu hỏi như sau: stackoverflow.com/q/16804265/756329stackoverflow.com/q/181036/756329
Joseph Hansen

4
Định dạng ngày và giờ không theo lệnh, mà là hệ thống rộng (vì vậy, trong hệ thống của tôi, nó là dd / mm / yyy).
Martin Argerami

40

Xem câu trả lời cho câu hỏi này .

Cụ thể, điều này có thể được thực hiện nguyên bản với:

copy /b filename.ext +,,

Điều này sẽ đặt dấu thời gian đến thời điểm hiện tại.

Tài liệu cho copylệnh là trên TechNet .

Dấu phẩy chỉ ra thiếu sót của tham số Destination .


2
Bạn có thể giải thích làm thế nào là làm việc? Là gì +,,? Làm thế nào để tôi biết ngày nào nó được thiết lập?
Joseph Hansen

1
@josmh Kiểm tra liên kết tài liệu để biết chi tiết. Dấu thời gian được đặt thành thời gian hiện tại khi bạn chạy lệnh. Bạn đang ám chỉ rằng bạn muốn có thể thay đổi dấu thời gian thành thời gian tùy ý bạn chọn?
William Jackson

7
Tôi không thấy cách đó giúp tôi chọn ngày mới cho tệp?
Joseph Hansen

Vấn đề chính với điều này là khi tệp không nằm trong thư mục hiện tại ... nó sẽ sao chép tệp vào thư mục hiện tại thay vì "chạm" vào vị trí đó.
Kasey speakman

1
@KaseySpeakman - lệnh này phụ thuộc vào việc có trong thư mục hiện tại. Sử dụng pushd FILEDIR, trước popdkhi
hôn mê

25

Nirsoft để giải cứu: hãy thử công cụ phần mềm miễn phí nircmd . Đó là một loạt các công cụ hữu ích trong một chương trình dòng lệnh nhỏ. Một trong các lệnh cho phép bạn chỉ định một hoặc cả hai thời gian đã tạothời gian đã sửa đổi , như sau:

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


3
Ngoài ra nếu bạn muốn chuyển thời gian từ tệp này sang tệp khác, tệp clonefiletime từ fileto hoạt động tốt nhất!
JasonXA

Không phải là dòng lệnh, nhưng thuận tiện hơn cho việc chỉnh sửa hàng loạt: BulkFileChanger của Nirsoft
SaAtomic

15

Sử dụng Cygwin, để đặt dấu thời gian của test.txt thành ngày 31 tháng 1 năm 2000, lúc 00: 01.00:

touch -t 200001310001.00 test.txt

Điều này trở lại với lỗi định dạng ngày không hợp lệ.
ngoằn ngoèo

@ziggy đảm bảo bạn nhận được tất cả các số không ...
Joseph Hansen

2
Điều này làm việc hoàn hảo cho tôi touch -t 201608221400 filenameđể đặt nó vào 22,08,2016 14:00:00.
SebastianH

1

Kiểm tra trang web sau: http://www.stevemiller.net/apps/

Hộp công cụ Bảng điều khiển Win32 chứa một tiện ích gọi là 'chạm' cho phép bạn sửa đổi thời gian trên một hoặc nhiều tệp. Tôi tin rằng nó chỉ hoạt động với thời gian định dạng Hoa Kỳ, mặc dù.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.