BorlandIMHO
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Alex1985 Вообще говоря, если нужен "стандартный таймштамп", то не нужно изобретать велосипед. "Всё уже украдено до нас" ©... Код: wmic.exe OS get LocalDateTime | выдаёт готовый таймштамп. Со всеми добавленными необходимыми нулями и даже миллисекундами и смещением относительно UTC. Если по какой-либо причине вас не устраивает формат - никто не мешает отформатировать так, как нужно... YuS_2 Вариант '"wmic path win32_localtime get Year,Month,Day,Hour,Minute /value|find "^=""' тоже правильный, да. Но, сдаётся мне, он содержит несколько больше операций присвоения, и будет работать медленнее. Единственная причина, по которой я стал бы такое использовать - если нужно получить не только таймштамп в текущей таймзоне, но и по-отдельности его составляющие (год-месяц-день-часы-минуты-секунды, а также номер дня в неделе и другие "плюшки"). Более элегантным (на мой взгляд) выглядит вариант: Код: @echo off if not defined test call :GETTIMESTAMP test echo %test% pause goto :EOF :GETTIMESTAMP for /f "delims=" %%A in ('wmic.exe OS get LocalDateTime ^|find "."') do set "TIMESTAMP=%%A" set "%1=%TIMESTAMP:~0,4%_%TIMESTAMP:~4,2%_%TIMESTAMP:~6,2%_%TIMESTAMP:~8,2%_%TIMESTAMP:~10,2%" goto :EOF | Он позволяет, в том числе, получать несколько таймштампов в различные переменные (имя переменной, в которую записывается таймштамп, является параметром при вызове подпрограммы). И при этом содержит ровно 2 операции присвоения... (добавлено позже) А если при этом не заморачиваться с форматированием и использовать стандартный таймштамп - можно вообще обойтись без подпрограммы и с одной операцией присвоения: Код: @echo off if not defined test for /f "delims=" %%A in ('wmic.exe OS get LocalDateTime ^|find "."') do set "test=%%A" echo %test% pause goto :EOF |
| Всего записей: 2571 | Зарегистр. 12-10-2006 | Отправлено: 22:37 27-09-2019 | Исправлено: BorlandIMHO, 22:55 27-09-2019 |
|