ฉันจะเปลี่ยนการประทับเวลาในไฟล์ได้อย่างไร [ซ้ำ]


74

ซ้ำเป็นไปได้:
วิธีการแก้ไขการประทับเวลาใน dll หรือ exe?
เทียบเท่ากับ Windows ของคำสั่ง Linux 'สัมผัส'?

ฉันจะตั้งค่าการประทับเวลาสำหรับไฟล์ผ่านทางบรรทัดคำสั่งเป็นวันที่ระบุได้อย่างไร

สถานการณ์เฉพาะของฉันคือ Windows 7


1
คุณควรชี้แจงคำถามและสถานะของคุณว่าคุณต้องการเลือกการประทับเวลาใหม่ คำตอบปัจจุบันสองคำตอบสมมติว่าคุณกำลังมองหาพอร์ต Windows ของคำสั่ง Unix touchที่ตั้งค่าการประทับเวลาของไฟล์เป็นเวลาปัจจุบัน
วิลเลียมแจ็คสัน

ฉันดู Sysinternals และฉันค่อนข้างมั่นใจว่าพวกเขาไม่มีประโยชน์สำหรับสิ่งนี้ คุณควรลองใช้โปรแกรมที่เชื่อมโยงกับจากsuperuser.com/questions/135901/…
William Jackson

@ William Jackson Changed ขอบคุณสำหรับสิ่งนั้น นอกจากนี้หากเป็นพอร์ตของคำสั่ง 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")

แก้ไข

สองตัวอย่าง:

(อันนี้มาจากความคิดเห็น :) ตั้งเวลาเข้าถึงล่าสุดสำหรับไฟล์aaa.csvเป็นเวลาปัจจุบัน:

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

ตั้งเวลาสร้างไฟล์foo.txtเป็น 24 พฤศจิกายน 2558 เวลา 6:00 น.:

$(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 เพื่อตั้งค่าแอตทริบิวต์เป็นวันที่ / เวลาปัจจุบันเช่นพฤติกรรมเริ่มต้นของคำสั่ง touch ในที่สุดคุณสามารถส่งรหัสนั้นเป็นอาร์กิวเมนต์ไปยังคำสั่ง powershell เพื่อให้มันเป็นเพียงการดำเนินการนั้นจากไฟล์แบทช์ที่มีอยู่ ตัวอย่าง:powershell $(Get-Item aaa.csv).lastwritetime=$(Get-Date)
sjbotha

1
ถ้าฉันต้องการทำสิ่งนี้กับทุกไฟล์ในไดเรกทอรี?
CodyBugstein

ค้นหา "Powershell ทุกไฟล์" คุณอาจพบคำถามเช่นนี้: stackoverflow.com/q/16804265/756329และstackoverflow.com/q/181036/756329
Joseph Hansen

4
รูปแบบวันที่และเวลาไม่ได้เป็นไปตามคำสั่ง แต่เป็นแบบกว้างของระบบ (ดังนั้นในระบบของฉันมันคือ dd / mm / yyy)
Martin Argerami

40

ดูคำตอบของคำถามนี้

โดยเฉพาะสิ่งนี้สามารถทำได้โดยกำเนิด:

copy /b filename.ext +,,

สิ่งนี้จะตั้งค่าการประทับเวลาเป็นเวลาปัจจุบัน

เอกสารสำหรับcopyคำสั่งบน TechNet

เครื่องหมายจุลภาคบ่งบอกถึงการละเว้นพารามิเตอร์ปลายทาง


2
คุณอธิบายได้ไหมว่ามันทำงานอย่างไร คือ+,,อะไร ฉันจะทราบได้อย่างไรว่าวันที่มันถูกกำหนดเป็น?
โจเซฟแฮนเซ่น

1
@josmh ตรวจสอบลิงก์เอกสารเพื่อดูรายละเอียด การประทับเวลาได้รับการตั้งค่าเป็นเวลาปัจจุบันเมื่อคุณเรียกใช้คำสั่ง คุณหมายถึงว่าคุณต้องการที่จะสามารถเปลี่ยนการประทับเวลาเป็นเวลาที่คุณเลือก?
วิลเลียมแจ็คสัน

7
ฉันไม่เห็นว่าจะช่วยให้ฉันเลือกวันที่ใหม่สำหรับไฟล์ได้อย่างไร
โจเซฟแฮนเซ่น

ปัญหาหลักของเรื่องนี้คือเมื่อไฟล์ไม่ได้อยู่ในไดเรกทอรีปัจจุบัน ... มันจะคัดลอกไฟล์ไปยังไดเรกทอรีปัจจุบันแทนที่จะเป็น "สัมผัส" ในสถานที่
Kasey Speakman

1
@KaseySpeakman - คำสั่งนี้อาศัยการอยู่ในไดเรกทอรีปัจจุบัน ใช้pushd FILEDIRก่อนคำสั่งและpopdหลัง
Tydaeus

25

Nirsoftเพื่อช่วยเหลือ: ลองใช้เครื่องมือฟรีแวร์NirCmd มันเป็นเครื่องมือที่มีประโยชน์มากมายในโปรแกรมบรรทัดคำสั่งขนาดเล็ก หนึ่งในคำสั่งอนุญาตให้คุณระบุเวลาที่สร้างอย่างใดอย่างหนึ่งหรือทั้งสองอย่างและเวลาแก้ไขเช่นนี้

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


3
นอกจากนี้หากคุณต้องการถ่ายโอนเวลาจากไฟล์หนึ่งไปยังอีกไฟล์หนึ่ง clonefiletime filefrom fileto จะทำงานได้ดีที่สุด!
JasonXA

ไม่ใช่คำสั่ง แต่สะดวกกว่าสำหรับการแก้ไขเป็นกลุ่ม: BulkFileChangerโดย Nirsoft
SaAtomic

15

ใช้ Cygwin เพื่อตั้งค่าการประทับเวลาของ test.txt เป็น 31 มกราคม 2000 เวลา 00: 01.00:

touch -t 200001310001.00 test.txt

สิ่งนี้กลับมาพร้อมกับข้อผิดพลาดของรูปแบบวันที่ที่ไม่ถูกต้อง
ziggy

@ziggy ตรวจสอบให้แน่ใจว่าคุณได้รับศูนย์ทั้งหมด ...
โจเซฟแฮนเซ่น

2
สิ่งนี้ทำงานได้อย่างสมบูรณ์แบบสำหรับฉันที่touch -t 201608221400 filenameจะตั้งเป็น 22.08.2016 14:00:00
SebastianH

1

ตรวจสอบหน้าเว็บต่อไปนี้: http://www.stevemiller.net/apps/

กล่องเครื่องมือ Win32 Console ประกอบด้วยยูทิลิตีที่เรียกว่า 'touch' ที่ให้คุณปรับเปลี่ยนเวลาในไฟล์อย่างน้อยหนึ่งไฟล์ ฉันเชื่อว่าใช้ได้กับเวลาในการจัดรูปแบบสหรัฐฯเท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.