Bạn sử dụng gì khi bạn muốn cập nhật trường sửa đổi ngày của một tệp trên Windows?
Chỉnh sửa: đã có một trang cho các ứng dụng như CheapScotsman chỉ ra tại đây .
Nếu bất cứ ai biết làm thế nào tôi có thể làm điều này thông qua C++, C #, WSH hoặc một cái gì đó tương tự, tốt và tốt, tôi sẽ nghĩ mọi thứ khác được bao phủ trong câu hỏi được liên kết.
Nếu bạn muốn chạm vào dấu ngày của tệp bằng windows, hãy sử dụng lệnh sau tại lệnh Nhắc:
copy /b filename.ext +,,
(trong đó filename.ext
là tên tệp của bạn). +,,
là một cờ đặc biệt để copy
bảo nó đơn giản cập nhật ngày/giờ trên tệp :
* Thay đổi thời gian và ngày của một tập tin
Nếu bạn muốn chỉ định thời gian và ngày hiện tại cho một tệp mà không sửa đổi tệp, hãy sử dụng cú pháp sau:
copy /b Source+,,
Dấu phẩy chỉ ra thiếu sót của tham số Destination.
Chỉnh sửa dựa trên nhận xét của Lumi và Justin: đặt phần này vào một tệp bó, vd. chạm.cmd
@COPY /B %1+,, %1
Điều này hoạt động ngay cả khi tệp không nằm trong thư mục hiện tại (được thử nghiệm trên Windows 7).
Tôi đã sử dụng và đề xuất nxutils là các cổng Win32 gốc của rất nhiều tiện ích Unix phổ biến. Có một lệnh touch
trong đó.
Nếu tất cả những gì bạn muốn là thay đổi ngày sửa đổi cuối cùng của tệp (đó là trường hợp của tôi):
C:\> powershell (ls your-file-name-here).LastWriteTime = Get-Date
type nul >>file & copy file +,,
file
nếu nó không tồn tại.cmd
dựng sẵn.CẬP NHẬT
Trời ạ! Điều này không hoạt động trên các tệp chỉ đọc, trong khi touch
thì không. Tôi đề nghị:
:touch
if not exist "%~1" type nul >>"%~1"& goto :eof
set _ATTRIBUTES=%~a1
if "%~a1"=="%_ATTRIBUTES:r=%" (copy "%~1"+,,) else attrib -r "%~1" & copy "%~1"+,, & attrib +r "%~1"
@ dash-tom-bang:
Dưới đây là lời giải thích của Technet về '+' bí ẩn và dấu phẩy:
sao chép/b Nguồn + ,
Dấu phẩy chỉ ra thiếu sót của tham số Destination.
Lệnh sao chép hỗ trợ hợp nhất nhiều tệp vào một tệp đích. Vì đích trống không thể được chỉ định bằng ký tự khoảng trắng tại lệnh Prompt, hai dấu phẩy có thể được sử dụng để biểu thị điều đó.
Và đây là tài liệu tham khảo lệnh sao chép của Technet: http://technet.Microsoft.com/en-us/l Library/bb490886.aspx
Nếu bạn cảm thấy muốn tự mã hóa nó, .NET cung cấp các phương thức File.SetLastAccessTime
, File.SetCreationTime
và File.SetLastWriteTime
.
đây là phiên bản đệ quy sử dụng powershell ... điều này sẽ thay đổi thời gian sửa đổi lần cuối cho tất cả các tệp và thư mục con và các tệp trong thư mục con của thư mục này
ps c:myDir> Get-ChildItem . * -recurse | ForEach-Object{$_.LastWriteTime = get-date}
Tôi đã thử điều này để tạo một tập tin trống trong tập lệnh bó của tôi. Bạn có thể sử dụng điều này:
ECHO text>file1.txt
cygwin
NAME _ đi kèm với touch
name__. Tôi biết bạn đã đề cập rằng bạn không muốn cài đặt toàn bộ khung, nhưng cygwin khá nhẹ và có thể được gọi từ cửa sổ lệnh dos mà không bật toàn bộ dòng lệnh giống như unix.
Bạn cũng có thể kiểm soát những công cụ nào để cài đặt, vì vậy bạn chỉ cần cài đặt tệp touch.exe
và để phần còn lại của khung.
Đây là một regfile đơn giản mà tôi đã viết cho thêm nhấp chuột phải vào "chạm" trong Windows Explorer . Nó cũng dễ dàng để kịch bản nó, vì nó chỉ gọi:
cmd.exe /c copy %1+nul %1 /by
Cổng win32 gốc của nhiều lệnh unix , bao gồm cả cảm ứng.
Tôi đã sử dụng nó trước đây và nó hoạt động tốt - không cài đặt, không DLL, v.v.
Hãy thử cái này từ CodeProject .
Bạn cũng có thể cài đặt Cygwin cung cấp cho bạn Touch cũng như rất nhiều lệnh * NIX khác.
Từ một câu hỏi tương tự trên Stack Overflow.
Để cập nhật dấu thời gian (bỏ qua chức năng khác của touch
), tôi sẽ sử dụng:
copy /b filename.ext +,,
từ trang web:
Funduc Software Touch là tiện ích 'chạm' miễn phí cho phép bạn thay đổi tem thời gian/ngày &/hoặc thuộc tính trên một hoặc nhiều tệp. Ngoài ra, FS Touch có thể thêm/bớt một số giây được chỉ định từ thời gian tệp hiện có. Bạn có thể chỉ định (các) tệp và/hoặc thư mục con nào sẽ thay đổi thông qua 'mặt nạ tệp phức tạp'. Chương trình có thể được chạy từ tương tác hoặc dòng lệnh. Mới đối với phiên bản 7.2 là một công tắc dòng lệnh để thay đổi dấu thời gian đã sửa đổi tệp +/- số giây đã chỉ định.
FS Touch chạy trên Windows XP, Vista, Windows 7 và Windows 8.
Nội dung này có thể được lưu vào một tập tin reg. Điều này sẽ thêm một menu ngữ cảnh nhấp chuột phải cho tất cả các tệp có khả năng "Touch File" (được thử nghiệm trên Windows 7). Sao chép tất cả các dòng sau vào tệp reg. Chạy tệp và phê duyệt câu hỏi. Nhấp chuột phải vào bất kỳ tệp nào (hoặc nhiều tệp) - tùy chọn "Chạm vào tệp" hiện khả dụng.
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell]
[HKEY_CLASSES_ROOT\*\Shell\Touch File]
[HKEY_CLASSES_ROOT\*\Shell\Touch File\command]
@="cmd /C copy /b \"%1\" +,,"
Làm thế nào về codeproject "Chạm cho Windows": http://www.codeproject.com/KB/appluggest/touch_win.aspx
chỉnh sửa; Câu hỏi tương tự ở đây: https://stackoverflow.com/questions/51435/windows-version-of-the-unix-touch-command/51439
Nếu bạn đang sử dụng git cho một hoặc nhiều dự án, thì git-bash
dựa trên mingw cho Windows có lệnh touch
. Tôi muốn cảm ơn @ greg-hewgill vì đã chỉ ra cho tôi rằng các tiện ích nix tồn tại cho các cửa sổ, bởi vì chính điều đó đã khiến tôi có ý tưởng thử chạm vào git-bash.
Tôi đã tìm thấy một cách nhanh chóng để làm điều đó nếu bạn đã cài đặt vim (không tuyệt vời cho các tệp lớn, sẽ mở toàn bộ tệp sau đó đóng nó ...)
vim foobar.txt +wq!
Đối số "+" để chạy các lệnh sau. "wq!" là "viết, bỏ, ép". Điều này sẽ mở tập tin, thực hiện lưu, sau đó đóng nó ngay lập tức sau đó.
Lưu các mục sau dưới dạng touch.bat trong thư mục% Windir%\system32 hoặc thêm thư mục được lưu vào biến môi trường PATH của bạn:
@echo off
if %1.==. goto end
if not exist %1 goto end
copy /b %1 +,, > nul
echo %1 touched!
:end
Sử dụng mẫu:
touch *.cpp
touch somefile.c
Tham khảo: Microsoft KB 69581
Tôi muốn tính năng 'chạm' của nhân bản/sao chép ngày của tệp từ một tệp khác, nguyên bản và có thể sử dụng được từ một tệp bó.
Vì vậy, 'kéo và thả' tệp video vào tệp bó, FFMPEG chạy, sau đó 'Ngày tạo' và 'Ngày sửa đổi' từ tệp đầu vào được sao chép vào tệp đầu ra.
Điều này ban đầu có vẻ đơn giản cho đến khi bạn thấy các tệp bó rất tệ trong việc xử lý tên tệp unicode, PowerShell trong dòng bị rối với các ký hiệu tên tệp và thoát hai lần là một cơn ác mộng.
Giải pháp của tôi là biến phần 'chạm' thành tập lệnh PowerShell riêng biệt mà tôi gọi là 'CLone-FILE-DATE.ps1' và nó chứa:
param
(
[Parameter(Mandatory=$true)][string]$SourcePath,
[Parameter(Mandatory=$true)][string]$TargetPath
)
(GI -LiteralPath $TargetPath).CreationTime = (GI -LiteralPath $SourcePath).CreationTime
(GI -LiteralPath $TargetPath).LastWriteTime = (GI -LiteralPath $SourcePath).LastWriteTime
Sau đây là ví dụ sử dụng trong tệp bó 'CONVERT.BAT' của tôi:
%~dp0\ffmpeg -i "%~1" ACTION "%~1-output.mp4"
CHCP 65001 > nul && PowerShell -ExecutionPolicy ByPass -File "%~dp0\CLONE-FILE-DATE.PS1" "%~1" "%~1-output.mp4"
Tôi nghĩ PowerShell có thể đọc được, vì vậy sẽ chỉ giải thích lô nói:
% ~ dp là thư mục hiện tại của tệp bó.
% ~ 1 là đường dẫn của tệp được thả vào lô mà không có dấu ngoặc kép.
CHCP 65001> nul đặt các ký tự thành UTF-8 và nuốt đầu ra.
- ExecutPolicy ByPass cho phép bạn chạy PowerShell mà không cần sửa đổi chính sách toàn cầu, có ở đó để ngăn mọi người vô tình chạy tập lệnh.
Thử
tập tin fsutil createnew new.txt 0
Năm lựa chọn thay thế được đề cập ở trên, cộng thêm ba lựa chọn khác không được đề cập ở đây, có thể được tìm thấy trên SuperUser: "Lệnh chạm đệ quy Windows"
Điều này hơi không liên quan đến câu hỏi ban đầu, nhưng tôi thấy điều này rất hữu ích trên Windows do GUI.
Tôi đang sử dụng tiện ích TouchPro cung cấp GUI (tích hợp vào Explorer Shell):
Chà, nếu bạn thực sự muốn có sẵn lệnh touch
, bạn có thể đặt nó trong một tệp bó có tên touch.bat
và dán vào C:\Windows
:
TYPE NUL >>%1
Đủ đơn giản.
Người Unix đã khắc phục sự cố chung về cập nhật ngày tệp của bất kỳ tệp nào bằng lệnh touch . Tuy nhiên, đối với Windows, đôi khi một phương pháp đơn giản hơn có thể áp dụng cho các trường hợp đặc biệt.
Tôi cần cập nhật dấu thời gian của phím tắt ứng dụng trong Windows 8.1 để có thể thay đổi màu nền của Khối ứng dụng, xem this SO question . Thay vì thực hiện một trong những công cụ thông minh ở trên, tôi thấy việc chỉnh sửa trường bình luận của phím tắt dễ dàng hơn. Hầu hết mọi người để trống, nhưng tất nhiên, một nhận xét hữu ích nhanh chóng được hình thành. Và nếu một bình luận tồn tại, thêm hoặc xóa một giai đoạn cuối cùng không bao giờ gây hại.
Tôi đánh giá cao đây là một câu hỏi cũ, tôi mới phát hiện ra cảm ứng trên hệ thống Windows 10 của mình. Tôi đã tải xuống và cài đặt Git từ tại đây (tôi nghĩ) và có vẻ như cảm ứng và nhiều tiện ích khác có trong thư mục bin.