ตั้งค่าวันที่สร้างของไฟล์เป็นของไฟล์อื่นด้วย Powershell


2

มีคนช่วยฉันให้ได้แถวนี้ไหม?

powershell Set-ItemProperty -LiteralPath '[NewVideo]' -Name CreationTimeUtc -Value ('[CreationTimeOfOldVideo]' -as [Datetime])

ฉันพยายามหมุนไฟล์วิดีโอ 90 องศาในขณะที่รักษาวันที่สร้างไฟล์ต้นฉบับ ฉันพบวิธีหมุนโดยใช้ ffmpeg แต่ฉันพยายามคัดลอกวันที่สร้างไปยังไฟล์ใหม่ การค้นหาทำให้ฉันสรุปได้ว่ามันควรจะเป็นไปได้ด้วย powershell (ซึ่งฉันไม่รู้อะไรเลย)

นี่คือสิ่งที่ฉันมี:

FOR /r %%I in (*.avi, *.mp4) DO CALL :loopbody "%%~fI" "%%~dpnI_%%~xI" "%%~tI"
GOTO :EOF
:loopbody
ffmpeg -i %1 -c:v libx264 -crf 18 -maxrate 4000k -bufsize 4000k -c:a libvo_aacenc -q:a 100 -map_metadata 0 -preset veryslow -tune film -movflags +faststart %2
powershell Set-ItemProperty -LiteralPath '%2' -Name CreationTimeUtc -Value ('%3' -as [Datetime])

ซึ่งคัดลอกมาจากผู้ใช้คนอื่นในฟอรัมนี้ ปัญหาอยู่ในบรรทัดสุดท้าย ตัวแปร% 3 คือวันที่ cmd ($ ~ tI) ของไฟล์เก่าซึ่งมักจะเป็น LastModifiedDate ไม่ใช่ CreationDate ฉันต้องการ powershell เพื่อตั้งค่าการสร้างวันที่ของไฟล์ใหม่เช่นเดียวกับการสร้างวันที่ของไฟล์เก่า ฉันได้ทำการทดลองกับ [oldfile] .CreateTimeUTC เพื่อไม่เป็นประโยชน์

ช่วยชื่นชมมาก


ขอบคุณ @ Ƭᴇcʜιᴇ007ทำงานเหมือนฝัน
Joost

คำตอบ:


2

ตัวอย่างคำสั่ง Powershell เพื่อรับวันที่สร้างไฟล์:

(Get-ChildItem c:\path\yourFile.txt).CreationTime

ตัวอย่างคำสั่ง Powershell เพื่อตั้งค่าวันที่สร้างไฟล์:

(Get-ChildItem c:\path\yourFile.txt).CreationTime = '01/01/1900 12:42AM'

ดังนั้นในฐานะหนึ่งซับที่จะใช้ในสคริปต์ที่มีอยู่ตามที่เป็นอยู่ (แทนที่จะเป็นบรรทัดสุดท้ายนั้น) ลองทำดังนี้:

powershell (Get-ChildItem '%2').CreationTime = (Get-ChildItem '%1').CreationTime

สิ่งนี้จะตั้งค่าเวลาสร้างไฟล์ใหม่ (% 2) เป็นเวลาสร้างไฟล์เก่า (% 1)

สิ่งนี้ถือว่า %2 มีเส้นทาง / ชื่อไฟล์และ %1 มีเส้นทาง / ชื่อไฟล์เก่า :)

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