Поточна дата у назві файлу


15

У мене запланований сценарій резервного копіювання, який робить дамп бази даних. Як я можу додати позначку часу до імені файлу?

Я говорю про Windows та CMD.

Відповіді:


21

У командному рядку та пакетних файлах ви можете використовувати %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

Оновлення: У коментарях нижче є цікаві повороти цієї команди, а також деякі можливі проблеми, яких можна уникнути.


3
Чудова маленька порада. BTW, якщо ви зробите це навпаки, тобто "file_20090601_172215", ви побачите файли у правильному порядку в алфавітному списку.

5
Ви також можете використовувати% time :: =% для видалення колонок.
— користувач1686

2
Я б сказав, що підстрока дат розірветься, як тільки локальна система буде відрізнятися від тестування сценарію? Він може навіть працювати для тестувального користувача та зламатись як біг сценарію через різні формати відображення дати ...
— Оскар Дювеборн

4
Остерігайтеся годин 0 - 9! CMD встановлює перший символ години <SPACE>, а не 0. Команда COPY вище матиме проблеми, якщо ви не вкладете в лапки назву файла призначення.
— Еван Андерсон

2
Зауважте, що %DATE%і %TIME%знають місцеві! Це означає, що на європейській машині ви потрапляєте DD.MM.YYYY. Arrgh.
— Pekka

14

Використовуйте %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

1
Нічого, ніколи не знаю про трюк: x = y. це дійсно круто.
— Євген Кац

1
+1 для фокусу: =: я був у цій грі ще з MS-Dos 1, і тоді я вперше бачив цю гру. Було б навіть краще, якби ви могли також змінити кілька символів !! :-)
— shawty

Ну, це було додано лише до Cmd.exe в серії Windows NT ... І якщо ви хочете виконати кілька змін, просто set tmp=%tmp:x=y%
— створіть

Вміст% DATE% (кількість поданих файлів, вміст та замовлення) є специфічним для локальної мови.
— symcbean

4

Єдиний надійний спосіб отримати відповідну дату незалежно від регіональних налаштувань - це рішення від 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

1

Використовуйте змінну% DATE% у назві файлу.

Існує також змінна% TIME%, але вона містить символи, заборонені в імені файлу.

Ось приклад написання рядка тексту в новий файл, де створений файл має дату та час у своєму імені.

echo "testfile" >> backup-%DATE%.txt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.