Zaplanowałem skrypt kopii zapasowej, który powoduje zrzut bazy danych. Jak mogę dodać znacznik daty do nazwy pliku?
Mówię o Windows i CMD.
Zaplanowałem skrypt kopii zapasowej, który powoduje zrzut bazy danych. Jak mogę dodać znacznik daty do nazwy pliku?
Mówię o Windows i CMD.
Odpowiedzi:
W wierszu polecenia i plikach wsadowych można użyć %date%
i, %time%
aby zwrócić odpowiednio datę i godzinę. Data działa dobrze, ale zwracana wartość czasu zawiera dwukropki, które są nielegalne w nazwach plików, ale istnieje sposób na ich usunięcie.
Użyj czegoś takiego:
COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt
Spowoduje to utworzenie nazwy pliku, takiej jak file_172215_01062009.txt
Aktualizacja: poniższe komentarze mają interesujące zmiany w tym poleceniu, a także niektóre potencjalne problemy, których można uniknąć.
%DATE%
i %TIME%
są świadomi ustawień regionalnych! Oznacza to, że na europejskiej maszynie masz DD.MM.YYYY
. Arrgh.
Użyj zmiennych środowiskowych %DATE%
i / lub %TIME
opcjonalnie podstawiając znaki, które nie są dozwolone w nazwach plików, używając %name:from=to%
( %TIME::=%
usuwa wszystkie dwukropki).
teoria »echo% data% 01.06.2009 teoria »echo% czas% 16: 30: 41,46 teoria »echo% czas :: =% 163052,17 teoria »echo% czas :: =,% 16,30,58,68 teoria »kopia zapasowa echa -% data% -% czas :: = -%. zip backup-2009-06-01-16-31-18,82.zip
set tmp=%tmp:x=y%
itp.
Jedynym niezawodnym sposobem uzyskania odpowiedniej daty niezależnie od ustawienia regionalnego jest rozwiązanie z 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
W nazwie pliku użyj zmiennej% DATE%.
Istnieje również zmienna% TIME%, ale zawiera znaki niedozwolone w nazwie pliku.
Oto przykład wpisywania wiersza tekstu do nowego pliku, w którym utworzony plik ma datę i godzinę w nazwie.
echo "testfile" >> backup-%DATE%.txt