Estou executando um programa a partir de um arquivo em lotes que, quando concluído, executa um backup automático do meu banco de dados MySQL.
Gostaria que o arquivo em lotes criasse um backup diferente para cada execução, para que eu possa voltar atrás.
O nome do arquivo desejado seria gnucash_shockwave-20121128210344.sql (formato da data AAAA-MM-DD-HH-MM-SS)
Eu pesquisei algumas coisas que diziam tentar %DATE:~4%
e %Date.Year%
mas recebo um erro que dizThe system cannot find the specified path.
Se eu remover a tentativa de registrar o carimbo de data e hora, o script funcionará bem, mas substitui o backup anterior
Aqui está a seção de código que estou falando:
@REM *** EXECUTION ***
echo. Starting backup...
SET timestamp %DATE:~-4%%DATE:~4,2%%DATE:~7,2%%TIME%
%mysqldir%\mysqldump -u %mysqluser% -p%mysqlpassword% -h %mysqlhost% -P %mysqlport% --databases --routines --verbose gnucash_shockwave > %BackupDir%\gnucash_shockwave-%timestamp%.sql
echo.------------------------------------------------------
echo. Backup complete!
Alguma sugestão?
windows
batch-file
date-time
guyfromfl
fonte
fonte
Respostas:
O formato Data e hora depende do que você especificou no miniaplicativo Região e idioma do Painel de controle.
Execute o seguinte arquivo em lotes (que assume dd / mm / aaaa e hh: mm: ss ) e modifique a extração de substring (usando os caracteres: e ~) conforme necessário para obter as peças apropriadas das seqüências de data e hora:
Para obter mais ajuda sobre a extração de substring, digite
set /?
no prompt de comando ou consulte esta página .fonte
> echo yyyy = %DATE:~6,4%
produziryyyy = /20/
. No entantoecho yyyy = %DATE:~10,4%
éyyyy = 2019
.Aqui está o que funcionou para mim.
fonte
Com um pouco de ajustes, eu consegui isso
Resultado:
"test-do_25_06-2015-22_21_51.txt" (Thursday_25th_June_2015-22:21.51)
fonte
%DATE%
~Ddd MM/DD/YYYY
, enquanto essa assume uma região que não é dos EUA, onde%DATE%
~DD/MM/YYYY
(sem o dia da semana). E este difere da resposta de Karan, pois esta está errada - a pergunta pede AAAAMMDD; esta resposta fornece DD_MM – AAAA.Desculpe pelo atraso ...
A única maneira confiável de obter uma data apropriada, independentemente da configuração regional, é a solução do foxidrive @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-script
fonte
Eu acho que isso melhora @ Rick Rogers responder um pouco.
EX: com a localização alemã (de_DE), há um espaço em branco à esquerda abaixo das 10 horas.
também eu queria um zero à esquerda na hora. "eco -! ^ _ hh! -" dá "09" em vez de apenas "9"
então eu quebro o código em duas partes para uma melhor leitura. este exemplo deve corresponder a mais localidades.
+ bônus: _ms = milissegundos ou quaisquer que sejam os dois últimos dígitos (-;
observação: às vezes a HORA precisa ser escapada, veja o código interno
saídas: eco fullTime = 15062018-10182821
fonte
a resposta mais curta (mais versátil?) é conforme o seguinte script TimeStamp.cmd que contém apenas três linhas de código (excluindo comentários etc.) ...
Observe a necessidade de usar %% em vez de% para a variável em uma instrução FOR em um arquivo em lotes
... rendimentos de execução (linhas em branco e comentários removidos) ...
fonte