Пакетный файл для создания папки на основе текущей даты и времени

у нас есть простой командный файл, который создает резервную копию папки и добавляет дату и время в конец.

Мы используем это постепенно и выводим папку, такую ​​как "данные 28-04-13".

Я хотел бы добавить время до конца, однако мой код выводит время как HH: MM, которое недопустимо для имени папки, так как оно содержит двоеточие (:).

Пожалуйста, кто-то может изменить мой код, чтобы удалить: или заменить его ".".

Спасибо

@echo off & for /F "tokens=1-4 delims=/ " %%A in ('date/t') do (
set DateDay=%%A
set DateMonth=%%B
set DateYear=%%C
)

@echo off & for /F "tokens=1-4 delims=/ " %%D in ('time/t') do (
set DateTime=%%D
)

set CurrentDate=%DateDay%-%DateMonth%-%DateYear%-%DateTime%

md "F:\MobilePC\data %CurrentDate"

Отвечал на мой собственный вопрос

Итак, это был самый простой способ для меня:

set CurrentDate=%DateDay%-%DateMonth%-%DateYear%-%time:~0,2%.%time:~3,2%

Какие выходы "31-10-13-11.35"

Ответ 1

Первые четыре строки этого кода предоставят вам надежные переменные YY DD MM YYYY HH Min Sec в XP Pro и выше.

Встроенные cmd параметры даты и времени настраиваются пользователем и поэтому ненадежны для любого общего командного файла.

@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

Ответ 2

rem replace : with .
set myTime=%time::=.%

rem remove cents of second
set myTime=%myTime:~0,-3%

Ответ 3

Вы можете установить текущую дату и время, выполнив это. Я использую это ежедневно в своем пакетном файле.

%date:~10%%date:~4,2%%date:~7,2%%time:~0,2%%time:~3,2%

вывод:

201509141639 ( 14th sept 2015 04:39 PM )

Ответ 5

 setlocal
   set "time=%time::=%"
   rem check that date has / delimeter if not replace it for valid
   md %date:/=%_%time:~0,-3%
 endlocal

Ответ 6

Используйте военное время... 6:15 am = 0615

  6:15 p.m. = 1815

Ответ 7

Этот код создаст папку с текущей датой и временем и скопирует полный контент из "D:\Tally Data" в папку "08-10-2016 17 23".

Для вашего компьютера требуется папка с именем "Tally Data" (копия под кодом в текстовый документ и сохранение в виде пакетного файла DOS)

for /f "tokens=1* delims=" %%a in ('date /T') do set datestr=%%a

set time=%TIME:~0,2%" "%TIME:~3,2%

mkdir C:\%date:/=%" "%time%\Backup

xcopy "D:\Tally Data" C:\%date:/=%" "%time%\Backup /E /S /Q /Y