Tôi ngạc nhiên khi có nhiều câu trả lời ở đây chỉ sai . Echo không có gì vào một tập tin sẽ lấp đầy tập tin với một cái gì đó như ECHO is ON
, và cố gắng lặp lại $nul
vào một tập tin sẽ thực sự đặt $nul
vào tập tin. Ngoài ra, đối với PowerShell, việc lặp lại $null
vào một tệp sẽ không thực sự tạo ra tệp 0kb, nhưng một cái gì đó được mã hóa thành UCS-2 LE BOM
, có thể trở nên lộn xộn nếu bạn cần đảm bảo các tệp của mình không có dấu thứ tự byte.
Sau khi kiểm tra tất cả các câu trả lời ở đây và tham khảo một số câu hỏi tương tự, tôi có thể đảm bảo những câu trả lời này sẽ hoạt động trên mỗi vỏ console. Chỉ cần thay đổi FileName.FileExtension
thành đường dẫn đầy đủ hoặc tương đối của tệp bạn muốn touch
; cảm ơn Keith Russell về COPY NUL FILE.EXT
bản cập nhật:
CMD w / Cập nhật dấu thời gian
copy NUL FileName.FileExtension
Điều này sẽ tạo một tệp mới có tên bất cứ thứ gì bạn đặt thay vì FileName.FileExtension
với kích thước 0 byte. Nếu tệp đã tồn tại, về cơ bản nó sẽ tự sao chép tại chỗ để cập nhật dấu thời gian. Tôi muốn nói rằng đây là một cách giải quyết hơn chức năng 1: 1 touch
nhưng tôi không biết bất kỳ công cụ tích hợp nào cho CMD có thể thực hiện cập nhật dấu thời gian của tệp mà không thay đổi bất kỳ nội dung nào khác.
Cập nhật dấu thời gian của CMD
if not exist FileName.FileExtension copy NUL FileName.FileExtension
Powershell w / Cập nhật dấu thời gian
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file} else {(ls FileName.FileExtension ).LastWriteTime = Get-Date}
Vâng, nó sẽ hoạt động trong giao diện điều khiển như một lớp lót; không yêu cầu đặt nó trong tệp tập lệnh PowerShell.
PowerShell w / out Cập nhật dấu thời gian
if (!(Test-Path FileName.FileExtension -PathType Leaf)) {New-Item FileName.FileExtension -Type file}
touch
. Thảo luận khác tại đây: superuser.com/questions/10426/ và thư viện Cygwin là một bộ công cụ phổ biến của các lệnh Unix trên Windows.