Командная строка Windows: создайте файл с текущей датой на ее имя

Я пытаюсь создать zip-файл из сценария пакетной обработки. Мне нужен он, чтобы быть названным как archive_.zip

К сожалению, это не работает над системами с датой, отформатированной как y/m/d из-за наклонных черт:

zip some_options "archive_%DATE%.zip"

%DATE% переменная расширяется до чего-то как

Mon 09/28/2009

У меня есть доступ к gnuwin32 пакету, таким образом, я мог использовать, скажем, sed заменять пробелы и наклонные черты тире. Проблема, как я использовал бы вывод sed создать имя файла архива zip?

В Unix (удар) можно использовать одинарные левые кавычки для оценивания на месте команда и использовать ее вывод в другой команде, чем-то как:

zip [...] archive_`echo %DATE% | sed -e s/.../.../`.zip

Действительно ли там что-нибудь подобно доступный в Windows?

Или возможно существует способ установить переменную на возвращенное значение sed и используйте это для построения имени файла?

19
задан 28.09.2009, 14:31

9 ответов

Можно заменить символы в переменных при помощи:

set _date=%DATE:/=-%
27
ответ дан 07.12.2019, 10:15

Я всегда использую:

For /f "tokens=1,2,3,4,5 delims=/. " %%a in ('date/T') do set CDate=%%a%%b%%c%%d

Затем CDate будет Sat02182012. Если Вы хотите сделать это большим количеством поддающегося сортировке набора CDate к %% d-%% b-%% c, таким образом, это будет 18.02.2012

For /f "tokens=1,2 delims=:" %%f in ('time /t') do set CTime=%%f%%g

Сделать папку/файл даты и времени дружественной.

5
ответ дан 07.12.2019, 10:15

Этот довольно неприятный бит кода должен сделать что-то как то, что Вы хотите

move "Filename.txt" "Filename%date:~6,4%%date:~3,2%%date:~0,2%_%Time:~0,2%%Time:~3,2%%Time:~6,2%.txt"

Если Вы изменяете имя файла соответственно.

2
ответ дан 07.12.2019, 10:15

Я отправил ответ на очень похожий вопрос здесь. Плевание даты в полях сделано в 1 строке вместо нескольких строк в ответе harrymc.

Интересная часть:

@echo off
for /F "tokens=2-4 delims=/ " %%i in ('date /t') do set yyyymmdd=%%k%%j%%i
echo Date: %yyyymmdd%

И предупреждение все еще релевантно:

Предупреждение: формат даты (yyyymmdd = %% k %% j %% i) зависит от Ваших региональных настроек. Поскольку я использую французский формат даты (dd/mm/yyyy), я должен использовать "%% k %% j %% я" как формат (%% я = день, %% j = месяц, %% j = год).

Если Ваши региональные настройки установлены на американский стиль (mm/dd/yyyy), необходимо использовать "%% k %% я %% j" (%% я = месяц, %% j = день, %% j = год).

4
ответ дан 07.12.2019, 10:15

Так как Ваш вопрос отмечен как Windows, я нашел это решение, которое работает в старых добрых .bat файлах:
"Windows Batch File (.bat) для получения текущей даты в формате MMDDYYYY",
и может, вероятно, быть адаптирован к Вашему случаю:

эхо на
@REM быстрый пакет даты Seamonkey (формат MMDDYYYY)
Установки @REM %date переменная
@REM Сначала анализирует месяц, день и год в мм, dd, yyyy форматы и затем объединяется, чтобы быть MMDDYYYY

ДЛЯ/F “TOKENS=1* DELIMS =” %% В (’DATE/T’) ДЕЙСТВИТЕЛЬНО УСТАНАВЛИВАЮТ CDATE = %% B
ДЛЯ/F “TOKENS=1,2 eol =/DELIMS =/” %% В (’DATE/T’) ДЕЙСТВИТЕЛЬНО УСТАНАВЛИВАЮТ мм = %% B
ДЛЯ/F “TOKENS=1,2 DELIMS =/eol = /” %% В (’повторяют %CDATE %’) ДЕЙСТВИТЕЛЬНО УСТАНАВЛИВАЕТ dd = %% B
ДЛЯ/F “TOKENS=2,3 DELIMS =/” %% В (’повторяют %CDATE %’) ДЕЙСТВИТЕЛЬНО УСТАНАВЛИВАЕТ yyyy = %% дата Bv vSET = мм % %% dd %% yyyy %

это действительно только устанавливает %date переменную, чтобы быть сегодняшней датой в формате MMDDYYYY, таким образом, это можно назвать позже в сценарии.

Править
Найденный лучшим синтаксисом. Учитывая, что моя дата сегодня "понедельник 28.09.2009":
день набора = Дата %: ~ 0,2%
месяц набора = Дата %: ~ 7,2%
год набора = Дата %: ~ 10,4%

2
ответ дан 07.12.2019, 10:15

чистая версия cmd.exe в сочетании с gnuwin32-'date':

%> for /F "usebackq" %d in ( `date.exe +"%y%m%d"` ) do zip archive_%d.zip <folder>
2
ответ дан 07.12.2019, 10:15

что относительно того, чтобы использовать cscript + vbasic:

WScript.shell.run "zip archive_" & DatePart("yyyy", Now) & "_" & DatePart("m", Now) & "_" & DatePart("d", Now) & ".zip " & WScript.arguments(0)

назовите его через

cscript /nologo zip_it.vbs
1
ответ дан 07.12.2019, 10:15

Для/f "tokens=1,2,3,4,5 обеззоливает =/". %% в ('date/T') действительно устанавливают CDate = %% d-%% b-%% c

Данные @echo = %CDate %

Это находится в День месяца года, который наиболее распространен теперь дни

1
ответ дан 07.12.2019, 10:15
zip [...] archive_`echo %DATE% | tr / -`.zip

Должен работать.

С другой стороны - возможно, Вы имеете date управляйте доступный (я не знаю Windows). Если да, то просто сделайте:

zip [...] archive_`date +'%Y-%m-%d'`.zip
0
ответ дан 07.12.2019, 10:15

Теги

Похожие вопросы