Eu agendei um script de backup que faz com que o banco de dados seja despejado. Como posso adicionar o carimbo de data / hora ao nome do arquivo?
Eu estou falando sobre Windows e CMD.
Eu agendei um script de backup que faz com que o banco de dados seja despejado. Como posso adicionar o carimbo de data / hora ao nome do arquivo?
Eu estou falando sobre Windows e CMD.
Respostas:
No prompt de comando e nos arquivos em lote, você pode usar %date%
e %time%
para retornar a data e a hora, respectivamente. A data funciona bem, mas o valor de hora retornado contém dois pontos, que são ilegais para uso em nomes de arquivos, mas existe uma maneira de removê-los.
Use algo como:
COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt
Isso produzirá um nome de arquivo como file_172215_01062009.txt
Atualização: Os comentários abaixo têm reviravoltas interessantes nesse comando, além de alguns problemas em potencial que você pode evitar.
%DATE%
e %TIME%
reconhece a localidade! Isso significa que em uma máquina Europeia, você começa DD.MM.YYYY
. Arrgh.
Use as variáveis de ambiente %DATE%
e / ou %TIME
, substituindo opcionalmente os caracteres que não são permitidos nos nomes de arquivos, usando %name:from=to%
( %TIME::=%
removeria todos os dois pontos).
teoria »eco% date% 01/06/2009 teoria »eco% tempo% 16: 30: 41,46 teoria »eco% time :: =% 163052,17 teoria »eco% time :: =,% 16,30,58,68 teoria »backup de eco-% date% -% time :: = -%. zip backup-2009-06-01-16-31-18,82.zip
set tmp=%tmp:x=y%
etc.
A única maneira confiável de obter a data apropriada seja qual for a configuração regional, é a solução do 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
Use a variável% DATE% no nome do arquivo.
Também existe uma variável% TIME%, mas ela contém caracteres não permitidos no nome de um arquivo.
Aqui está um exemplo de gravação de uma linha de texto em um novo arquivo, onde o arquivo criado possui uma data e hora em seu nome.
echo "testfile" >> backup-%DATE%.txt