วันที่ปัจจุบันในชื่อไฟล์


15

ฉันมีสคริปต์สำรองที่กำหนดเวลาไว้ซึ่งทำให้การถ่ายโอนฐานข้อมูล ฉันจะเพิ่มการประทับเวลาวันที่ในชื่อไฟล์ได้อย่างไร

ฉันกำลังพูดถึง Windows และ CMD

คำตอบ:


21

ในพรอมต์คำสั่งและแบตช์ไฟล์คุณสามารถใช้%date%และ%time%เพื่อกลับวันที่และเวลาตามลำดับ วันที่ใช้งานได้ดี แต่ค่าเวลาที่ส่งคืนมีโคลอนซึ่งผิดกฎหมายสำหรับใช้ในชื่อไฟล์ แต่มีวิธีลบไฟล์เหล่านั้น

ใช้สิ่งที่ชอบ:

COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt

สิ่งนี้จะสร้างชื่อไฟล์เช่น file_172215_01062009.txt

อัปเดต:ความคิดเห็นด้านล่างมีข้อผิดพลาดที่น่าสนใจเกี่ยวกับคำสั่งนี้รวมถึงปัญหาที่อาจเกิดขึ้นที่คุณสามารถหลีกเลี่ยงได้


3
สุดยอดเคล็ดลับเล็ก ๆ น้อย ๆ BTW ถ้าคุณทำอย่างอื่นนั่นคือ: "file_20090601_172215" คุณจะเห็นไฟล์ในลำดับที่ถูกต้องในรายการตัวอักษร

5
คุณยังสามารถใช้% เวลา :: =% เพื่อลบโคลอน
user1686

2
ฉันจะบอกว่าวันที่ซับสตริงวันที่จะแตกทันทีที่สถานที่ของระบบแตกต่างจากเมื่อสคริปต์ทดสอบ? มันอาจได้ทำงานสำหรับผู้ใช้การทดสอบและแบ่งเป็นวิ่งสคริปต์เพราะรูปแบบการแสดงวันที่ที่แตกต่างกันตั้ง ...
Oskar Duveborn

4
ระวังชั่วโมง 0 - 9! CMD ตั้งค่าอักขระแรกของชั่วโมงเป็น <SPACE> แทนที่จะเป็น 0 คำสั่ง COPY ด้านบนจะมีปัญหาหากคุณไม่ใส่ชื่อไฟล์ปลายทางในเครื่องหมายคำพูด
Evan Anderson

2
ทราบว่า%DATE%และ%TIME%เป็นสถานที่ตระหนักถึง! DD.MM.YYYYก็หมายความว่าบนเครื่องยุโรปคุณจะได้รับ โอ๊ย
Pekka

14

ใช้ตัวแปรสภาพแวดล้อม%DATE%และ / หรือ%TIMEเลือกแทนที่อักขระที่ไม่ได้รับอนุญาตในชื่อไฟล์โดยใช้%name:from=to%( %TIME::=%จะลบโคลอนทั้งหมด)

ทฤษฎี» echo% วันที่%
2009-06-01

ทฤษฎี» echo% เวลา%
16: 30: 41,46

ทฤษฎี» echo% เวลา :: =%
163052,17

ทฤษฎี» echo% time :: =,%
16,30,58,68

ทฤษฎี» echo backup-% date% -% time :: = -%. zip
สำรอง 2009-06-01-16-31-18,82.zip

1
ว้าวไม่เคยรู้เรื่อง: x = y trick มันเจ๋งจริงๆ
Eugene Katz

1
+1 สำหรับ: = เคล็ดลับ iv'e อยู่ในเกมนี้มาตั้งแต่ MS-Dos 1 และนั่นเป็นครั้งแรกที่ Iv'e เห็นสิ่งนั้น จะดียิ่งขึ้นถ้าคุณสามารถเปลี่ยนหลายตัวอักษรได้ด้วย !! :-)
shawty

มันถูกเพิ่มไปยัง Cmd.exe ในซีรีส์ Windows NT เท่านั้น ... และถ้าคุณต้องการทำการเปลี่ยนแปลงหลายอย่างเพียงแค่มีสายset tmp=%tmp:x=y%อื่น ๆ
user1686

เนื้อหาของ% DATE% (จำนวนไฟล์เนื้อหาและการสั่งซื้อ) เป็นภาษาเฉพาะ
symcbean

4

วิธีที่เชื่อถือได้เพียงวิธีเดียวในการรับวันที่เหมาะสมไม่ว่าการตั้งค่าภูมิภาคคือโซลูชันจาก foxidrive @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-script

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause

1

ใช้ตัวแปร% DATE% ในชื่อไฟล์

มีตัวแปร% TIME% เช่นกัน แต่มีอักขระที่ไม่อนุญาตในชื่อไฟล์

นี่คือตัวอย่างของการเขียนบรรทัดข้อความลงในไฟล์ใหม่ซึ่งไฟล์ที่สร้างขึ้นมีวันที่และเวลาในชื่อ

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