Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] проблема с датой

Ответить
Настройки темы
CMD/BAT - [решено] проблема с датой

Аватара для chek

Ветеран


Сообщения: 508
Благодарности: 10

Профиль | Отправить PM | Цитировать


всем привет.
коллеги, объясните почему:
если час содержит два числа, т.е. с 10 до 24
Код: Выделить весь код
O:\>%DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%_%TIME:~0,2%.%TIME:~3,2%
"2019.10.24_17.07"
если час содержит одно число, т.е. с 0 до 10
Код: Выделить весь код
O:\>%DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%_%TIME:~0,2%.%TIME:~3,2%
"2019.10.25_"

O:\>%TIME:~0,2%
"9"

O:\>%TIME:~3,2%
"22"

O:\>%TIME:~0,2%.%TIME:~3,2%
"9.22"
как так?! и что делать?

Отправлено: 11:05, 28-10-2019

 

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


chek, Проблема в настройке формата отображения даты и времени в системе - посмотрите, как у Вас установлено.
Я обычно настраиваю форматы dd.MM.yyyy HH:mm:ss
Для ясности сделайте
Echo "%Date%" "%Time%"
для разных значений дат и времени.
Увидите, что позиции компонентов даты и времени разные, в зависимости от количества в них цифр.
Если эти манипуляции с датой/временем надо для командного файла, то, чтобы не зависеть от этой настройки, я предпочитаю:
Код: Выделить весь код
@Echo Off
cls
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@DT=%%d"

	Echo %@DT%
	Echo 01234567890123
	Echo.

	Echo %@DT:~0,4%.%@DT:~4,2%.%@DT:~6,2%_%@DT:~8,2%.%@DT:~10,2%.%@DT:~12,2%
pause
Exit /B 0
Выделенные строки носят иллюстративный характер и для логики работы не нужны.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 28-10-2019 в 13:18.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:10, 28-10-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для chek

Ветеран


Сообщения: 508
Благодарности: 10

Профиль | Отправить PM | Цитировать


так команда у меня выдает результат, это видно из последнего примера, а вот если целиком строку, то нет.
Echo "%Date%" "%Time%" будет разный, т.к. количество символов в time меньше, это понятно.
но какая разница сколько этих символов выводить в ответ?

Отправлено: 14:54, 28-10-2019 | #3



Moderator


Сообщения: 53175
Благодарности: 15430

Профиль | Отправить PM | Цитировать


chek, у вас же нет команды Echo, в приведённом вами фрагменте попытка выполнить код.

Фактически там запуск:
2019.10.25_ 9.22
с пробелом, который cmd вставляет в %Time% при формате H:mm:ss, если H < 10.

Последний раз редактировалось Petya V4sechkin, 28-10-2019 в 15:23.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:11, 28-10-2019 | #4


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Цитата chek:
что делать? »
Переходить на Powershell.
Код: Выделить весь код
get-date -f "dd.MM.yyyy HH:mm:ss"

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:19, 28-10-2019 | #5


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


chek, Жить надо честно! Вы писАли:
Цитата chek:
O:\>%DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%_%TIME:~0,2%.%TIME:~3,2%
"2019.10.24_17.07" »
Цитата chek:
O:\>%DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%_%TIME:~0,2%.%TIME:~3,2%
"2019.10.25_" »
но это полуправда, Вы не отобразили точно, что появилось в результате Вашей манипуляции (спасибо, что Petya V4sechkin, натыркал меня носом).
Цитата:
"2019.10.28_" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

"2019.10.28_15.28" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
В командной строке Вы формируете команду.
Когда в часе 1 символ, перед ним присутствует пробел (2019.10.28_ 5.25), а когда 2 - пробела нет (2019.10.28_15.25).
Соответственно, в первом случае присутствует попытка интерпретировать первую команду до пробела, а хвост интерпретатору уже не интересен.
И в любом случае Вы получаете сообщение об ошибке выполнения - нет таких команд.
Вот если бы Вы написАли
Echo %DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%_%TIME:~0,2%.%TIME:~3,2%
всё было бы корректно
2019.10.28_ 5.25

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 28-10-2019 в 15:46.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:38, 28-10-2019 | #6


Аватара для chek

Ветеран


Сообщения: 508
Благодарности: 10

Профиль | Отправить PM | Цитировать


теперь ясно.
к сожалению перевод времени на полный формат мне не помог, то ли не влияет на cmd, то ли особенность server 2019.
пришлось вводить доп переменную, которая убирает ноль
set HTime=%time: =0%
и использовать ее в дальнейшем
%DATE:~6,4%.%DATE:~3,2%.%DATE:~0,2%_%HTime:~0,2%.%TIME:~3,2%

Отправлено: 17:43, 06-11-2019 | #7


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата chek:
пришлось вводить доп переменную, которая убирает ноль »
а если наоборот, добавлять 0 там где его нет.
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:36, 06-11-2019 | #8


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


chek,
Цитата chek:
пришлось вводить доп переменную, которая убирает ноль
set HTime=%time: =0% »
Вы сделали
Цитата alpap:
добавлять 0 там где его нет. »
вместо пробела
А почему бы wmic не использовать?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:41, 06-11-2019 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] проблема с датой

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Работа с датой, временем alexey_vf Скриптовые языки администрирования Windows 9 05-06-2013 04:52
Ошибка - Глюки с ситемной датой barbedoo Microsoft Windows 2000/XP 43 01-07-2008 18:41
C/C++ - Работа с датой и время hhh8486 Программирование и базы данных 3 02-11-2007 18:48
проблема с датой Alex andr Microsoft Windows 2000/XP 4 12-12-2005 07:03
проблемы с датой drosd Хочу все знать 1 30-04-2004 07:54




 
Переход