Я пытаюсь создать zip-файл из пакетного скрипта. Мне нужно, чтобы он был назван как archive_.zip
К сожалению, это не работает в системах с датой, отформатированной как y / m / d из-за косой черты:
zip some_options "archive_%DATE%.zip"
%DATE%
Переменная расширяется что - то вроде
Mon 09/28/2009
У меня есть доступ к пакету gnuwin32, так что я могу использовать, скажем, sed
для замены пробелов и косых черт тире. Проблема в том, как бы я использовал вывод sed
для создания имени файла zip-архива?
В Unix (bash) можно использовать обратные кавычки для оценки команды на месте и использовать ее вывод в другой команде, например:
zip [...] archive_`echo %DATE% | sed -e s/.../.../`.zip
Есть ли что-нибудь подобное в Windows?
Или, может быть, есть способ установить переменную в возвращаемое значение sed
и использовать ее для создания имени файла?
источник
%date:~-10,2%-%date:~-7,2%-%date:~-4,4%
!Я всегда использую:
Тогда CDate будет Sat02182012. Если вы хотите сделать его более сортируемым, установите CDate в %% d - %% b - %% c, так что 2012-02-18
Чтобы сделать папку с датой и временем дружественной к файлам.
источник
Я разместил ответ на очень похожий вопрос здесь . Расщепление даты в полях выполняется в 1 строку вместо нескольких строк в ответе Гаррима.
Интересная часть:
И предупреждение по-прежнему актуально:
источник
/=-
подставляет/
со знаком минус.источник
Этот довольно ужасный кусок кода должен делать что-то вроде того, что вы хотите
Если вы измените имя файла соответствующим образом.
источник
echo %date:~6,4%%date:~3,2%%date:~0,2%
возвращается9-289-20
на мою машину, так как у меня установлена дата использования yyyy-MM-dd (поэтому сегодня 2009-09-28).Поскольку ваш вопрос помечаются как Windows, я нашел решение , которое работает в старых добрых .bat файлах:
«Windows Batch File (.bat) , чтобы получить текущую дату в формате ММДДГГГГ» ,
и , вероятно , может быть адаптировано к вашему делу:
это ничего не делает, но устанавливает переменную% date в сегодняшнюю дату в формате MMDDYYYY, чтобы ее можно было вызвать позже в скрипте.
Править
Найден лучший синтаксис. Учитывая, что моя дата сегодня "Пн 28/09/2009":
установленный день =% Дата: ~ 0,2%
установленный месяц =% Дата: ~ 7,2%
установленный год =% Дата: ~ 10,4%
источник
Чистая версия cmd.exe в сочетании с gnuwin32-'date ':
источник
как насчет использования cscript + vbasic:
позвоните через
источник
Для / f "токенов = 1,2,3,4,5 delims = /." %% a in ('date / T') установите CDate = %% d - %% b - %% c
@echo data =% CDate%
Это в год-месяц-день, который наиболее распространен в наши дни
источник
Любое решение, которое использует либо
%DATE%
вывод, либоdate /t
может выйти из строя, если пользователь изменил свои региональные настройки. Например, я установил свой формат «короткой даты»"yyyy-MM-dd"
, чтобы я%DATE%
равнялся ему"2012-02-18"
, иdate /t
выдает тот же результат. (Это для Windows 7; я полагаю, то же самое для более ранних версий Windows.)Создайте командный файл и затем выполните его.
Поскольку у вас есть команда GNU
date
, вы можете сделать что-то вроде этого:tmp.bat
будет содержать что-то вроде:Обратите внимание, что это создает
tmp.bat
в текущем каталоге, что может быть проблемой; это может быть лучше для создания%TEMP%\tmp.bat
. Я также не удалил файл позже; это достаточно легко сделать.date +FORMAT
позволяет указать формат выводаdate
команды, аналогичноprintf
строке формата; подробности смотрите в документации по дате coreutils . Формат может включать произвольный текст, поэтому в этом случае вам даже не нужно его использоватьsed
.источник
Я полагаю, если вы соберете все вместе, вы получите то, что вам подходит. Это в системе Windows 2003, чтобы дать мне снимок запущенных процессов в ответ на триггер от монитора производительности:
Выходной файл назван в одной строке без разделителей.
источник
Должно сработать.
С другой стороны - возможно, у вас есть
date
доступная команда (я не знаю Windows). Если да, то просто сделайте:источник
не уверен, подходит ли вам это, но мой код
источник