У меня есть запланированный сценарий резервного копирования, который делает дамп базы данных. Как я могу добавить дату и время к имени файла?
Я говорю о 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
переменные среды, при необходимости заменяя символы, недопустимые в именах файлов, используя %name:from=to%
(%TIME::=%
удалил бы все двоеточия).
theory » echo %date% 2009-06-01 theory » echo %time% 16:30:41,46 theory » echo %time::=% 163052,17 theory » echo %time::=,% 16,30,58,68 theory » echo backup-%date%-%time::=-%.zip backup-2009-06-01-16-31-18,82.zip
Единственный надежный способ получить подходящую дату независимо от региональных настроек - это решение от foxidrive @ https://stackoverflow.com/questions/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