Ho programmato uno script di backup che rende il dump del database. Come posso aggiungere il timestamp della data al nome del file?
Sto parlando di Windows e CMD.
Ho programmato uno script di backup che rende il dump del database. Come posso aggiungere il timestamp della data al nome del file?
Sto parlando di Windows e CMD.
Risposte:
Nel prompt dei comandi e nei file batch, è possibile utilizzare %date%
e %time%
per restituire rispettivamente la data e l'ora. La data funziona bene, ma il valore dell'ora restituito contiene due punti, che sono illegali per l'uso nei nomi di file, ma c'è un modo per rimuoverli.
Usa qualcosa come:
COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt
Questo produrrà un nome file come file_172215_01062009.txt
Aggiornamento: I commenti qui sotto hanno interessanti colpi di scena su questo comando e alcuni potenziali problemi che puoi evitare.
%DATE%
e %TIME%
sono a livello locale! Significa che su una macchina europea, ottieni DD.MM.YYYY
. Arrgh.
Utilizzare le variabili di ambiente %DATE%
e / o %TIME
, sostituendo facoltativamente i caratteri non consentiti nei nomi di file, utilizzando %name:from=to%
( %TIME::=%
rimuoverebbe tutti i due punti).
teoria »eco% data% 2009-06-01 teoria »eco% tempo% 16: 30: 41,46 teoria »eco% tempo :: =% 163052,17 teoria »eco% tempo :: =,% 16,30,58,68 teoria »backup eco-% data% -% tempo :: = -%. zip backup 2009-06-01-16-31-18,82.zip
set tmp=%tmp:x=y%
ecc.
L'unico modo affidabile per ottenere la data appropriata indipendentemente dall'impostazione regionale è la soluzione di 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
Usa la variabile% DATE% nel nome del file.
Esiste anche una variabile% TIME%, ma contiene caratteri non consentiti in un nome file.
Ecco un esempio di scrittura di una riga di testo in un nuovo file, in cui il file creato ha una data e un'ora nel suo nome.
echo "testfile" >> backup-%DATE%.txt