У мене запланований сценарій резервного копіювання, який робить дамп бази даних. Як я можу додати позначку часу до імені файлу?
Я говорю про Windows та CMD.
У мене запланований сценарій резервного копіювання, який робить дамп бази даних. Як я можу додати позначку часу до імені файлу?
Я говорю про Windows та CMD.
Відповіді:
У командному рядку та пакетних файлах ви можете використовувати %date%
та %time%
повертати дату та час відповідно. Дата працює чудово, але повернене значення часу містить колонки, які є незаконними для використання у назви файлів, але є спосіб їх видалити.
Використовуйте щось на кшталт:
COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt
Це створить ім'я файлу, наприклад file_172215_01062009.txt
Оновлення: У коментарях нижче є цікаві повороти цієї команди, а також деякі можливі проблеми, яких можна уникнути.
%DATE%
і %TIME%
знають місцеві! Це означає, що на європейській машині ви потрапляєте DD.MM.YYYY
. Arrgh.
Використовуйте %DATE%
і / або %TIME
змінні середовища, необов'язково замінюючи символи, які не дозволені у назви файлів, використовуючи %name:from=to%
( %TIME::=%
видалить усі колонки).
теорія »ехо% дата% 01.06.2009 теорія »ехо% час% 16: 30: 41,46 теорія »ехо% час :: =% 163052,17 теорія »ехо% час :: =,% 16,30,58,68 теорія »echo backup-% date% -% time :: = -%. zip резервне копіювання-2009-06-01-16-31-18,82.zip
set tmp=%tmp:x=y%
Єдиний надійний спосіб отримати відповідну дату незалежно від регіональних налаштувань - це рішення від 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
Використовуйте змінну% DATE% у назві файлу.
Існує також змінна% TIME%, але вона містить символи, заборонені в імені файлу.
Ось приклад написання рядка тексту в новий файл, де створений файл має дату та час у своєму імені.
echo "testfile" >> backup-%DATE%.txt