РЕДАКТИРОВАТЬ: лучший способ сделать это - взять строку даты / времени, которая имеет определенный и неизменный формат, вместо того, чтобы использовать определенные из локали значения из %date%
и %time%
. Вы можете использовать следующее, чтобы получить его:
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined mydate set mydate=%%x
Это дает что-то вроде 20120730203126.530000+120
, и вы можете использовать это для построения имен ваших файлов.
(Старый ответ ниже)
Вы можете просто заменить оскорбительный символ пустой строкой:
echo %time::=%
Синтаксис %var:str1=str2%
принимает переменную среды (или псевдопеременную в случае %TIME%
и заменяет str1
на str2
. Если после знака равенства ничего не следует, то str1
просто удаляется.
В вашем конкретном случае, я думаю, вы захотите следующее:
rem cut off fractional seconds
set t=%time:~0,8%
rem replace colons with dashes
set t=%t::=-%
set FileName=Build-%date%-%t%
Более грубый способ, если вы не знаете, используются ли двоеточия (но порядок времени будет таким же):
set FileName=Build-%date%-%time:~0,2%-%time:~3,2%-%time:~6,2%
Однако все предыдущие вещи предполагают, что вы используете стандартный формат даты ISO 8601, т.е. е. 2009-10-29. Я бы предположил, что это просто нормально, но некоторые люди используют другие форматы, поэтому будьте осторожны. Но так как вы не спросили о дате, я предполагал, что у вас нет проблем там.