Dosya adındaki geçerli tarih


15

Ben veritabanı dökümü yapan zamanlanmış yedekleme komut dosyası var. Tarih zaman damgasını dosya adına nasıl ekleyebilirim?

Windows ve CMD hakkında konuşuyorum.

Yanıtlar:


21

Komut istemi ve toplu dosyalarında kullanabilirsiniz %date%ve %time%sırasıyla tarih ve saati dönmek için. Tarih iyi çalışıyor, ancak döndürülen zaman değeri dosya adlarında kullanım için yasadışı olan iki nokta üst üste içeriyor, ancak bunları kaldırmanın bir yolu var.

Şunun gibi bir şey kullanın:

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

Bu, aşağıdaki gibi bir dosya adı oluşturur: file_172215_01062009.txt

Güncelleme: Aşağıdaki yorumlarda bu komutun yanı sıra önleyebileceğiniz bazı potansiyel sorunlar var.


3
Büyük küçük ipucu. BTW, başka bir şekilde yaparsanız, yani: "file_20090601_172215", dosyaları alfabetik olarak doğru sırada görürsünüz.

5
İki nokta üst üste işaretlerini kaldırmak için% time :: =% öğesini de kullanabilirsiniz.
user1686

2
Tarih yerel dize-in sistem yerel ayarı komut dosyası sınandığı zaman farklı olur kırmak söyleyebilirim? Hatta test kullanıcısı için çalışabilir ve farklı tarih görüntüleme formatları ayarlandığından komut dosyası koşucusu olarak kırılabilir ...
Oskar Duveborn

4
0 - 9 saatleri dikkate alın! CMD, saatin ilk karakterini 0 yerine <SPACE> olarak ayarlar. Hedef dosya adını tırnak işaretleri içine almazsanız yukarıdaki COPY komutu sorun yaşayacaktır.
Evan Anderson

2
Unutmayın %DATE%ve %TIME%yerel ayarlara dikkat edin! Bu, Avrupa makinesinde elde edeceğiniz anlamına gelir DD.MM.YYYY. Arrgh.
Pekka

14

Kullanım %DATE%ve / veya %TIMEisteğe bağlı olarak kullanarak, dosya izin verilmez karakterleri ikame ortam değişkenleri %name:from=to%( %TIME::=%her iki nokta üst üste kaldırmak).

teori »eko% tarih%
2009-06-01

teori »eko% zaman%
16: 30: 41,46

teori »eko% zaman :: =%
163052,17

teori »eko% zaman :: =,%
16,30,58,68

teori »yankı yedekleme-% tarih% -% zaman :: = -%. zip
Yedekleme-2009-06-01-16-31-18,82.zip

1
vay, asla bilmiyorum: x = y hile. Bu gerçekten havalı.
Eugene Katz

1
+1 için: = hile, iv'e MS-Dos 1'den beri bu oyunda oldu ve Iv'e bunu ilk kez gördü. Eğer birden çok karakter değiştirmek çok daha iyi olurdu! :-)
shawty

Eh, sadece Windows NT serisinde Cmd.exe eklendi ... Ve birden fazla değişiklik yapmak istiyorsanız, sadece bir zincir set tmp=%tmp:x=y%vb.
Var

% DATE% içeriği (dosya sayısı, içerik ve sipariş) yerel ayara özgüdür.
symcbean

4

Bölgesel ayar ne olursa olsun uygun tarihi almanın tek güvenilir yolu, foxidrive @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-script çözümü

@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

Dosya adında% DATE% değişkenini kullanın.

% TIME% değişkeni de var, ancak dosya adında izin verilmeyen karakterler içeriyor.

Aşağıda, oluşturulan dosyanın adında bir tarih ve saatin bulunduğu yeni bir dosyaya metin satırı yazmanın bir örneği verilmiştir.

echo "testfile" >> backup-%DATE%.txt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.