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

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

Ответить
Настройки темы
CMD/BAT - Сравнить две даты в cmd

Старожил


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

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


Помогите с CMD скриптов по такому условию:
Сравнить 2 даты - текущую и заданную в файле статически
Если текущая дата меньше - вывести 111
Иначе вывести 222
Спасибо

Отправлено: 21:12, 24-11-2024

 

Аватара для NickM

Ветеран


Contributor


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

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


Одним командным сценарием не обойтись, как вариант использовать VBScript, могут предложить и powershell:
Код: Выделить весь код
@Echo Off
Set "date.vbs=%temp%\date.vbs"
Set "StrDate=31.12.2024"
More +8 "%~0">"%date.vbs%"
For /F %%i In ('CScript //NoLogo %date.vbs% "%StrDate%"') Do Echo.%%i
Del /F /Q "%date.vbs%"
Pause
Exit /B 0

On Error Resume Next

Function CompareDates(StrDate)
 If Date() < CDate(StrDate) Then CompareDates="111" Else CompareDates="222" End If
End Function

WScript.Echo CompareDates(WScript.Arguments(0))

Последний раз редактировалось NickM, 25-11-2024 в 18:04.


Отправлено: 22:17, 24-11-2024 | #2



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

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


Новый участник


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

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


Начнем с того, что подразумевается под датой: это гео- локалезависимое значение, которое может быть представлено как 11.25.2024 или 2024-11-25 и т.д. было бы правильным с технической точки зрения сравнивать даты, например, с помощью PowerShell.
Код: Выделить весь код
# две даты (в китайской и русской локали)
$zh, $ru = '2024年11月25日', '25.11.2024'
# инверторы даты (стандартного вида)
$iz, $ir = ,[DateTime]::new(0) * 2
# проверяем можем ли инвертировать даты
if ([DateTime]::TryParse($zh, [ref]$iz) -and [DateTime]::TryParse($ru, [ref]$ir)) {
   # сравниваем
   $iz -eq $ir
}
Предполагая, что даты всегда в одной и той же локали и имеют одинаковую форму записи, сравнение в командном языке можно свести до:
Код: Выделить весь код
set "mydate=25.11.2024"
if %date:.=% equ %mydate:.=% (echo:111) else (echo:222)

Последний раз редактировалось SQLai Lama, 26-11-2024 в 06:56.

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

Отправлено: 08:36, 25-11-2024 | #3


Ветеран


Contributor


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

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


Код: Выделить весь код
@Echo Off &Cls
rem Статическую дату задать в формате YYYYMMDD

	Set /A StatDate=20241129

	FOR /F "tokens=2 delims==." %%d In ('WMIC OS GET LOCALDATETIME /VALUE') DO Set "d=%%d"
	Set /A d=%d:~0,8%

	If %d% LSS %StatDate% (Echo 111) Else (Echo 222)
Pause
Exit /B

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

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

Отправлено: 13:52, 28-11-2024 | #4


Новый участник


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

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


megaloman, вызов принят.
Код: Выделить весь код
wmic os get localdatetime /value | perl -ne "/(\d{8})/ && print 20241213-$1==0?111:222"

Отправлено: 11:28, 13-12-2024 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - CMD/BAT запись в текстоваый файл предыдущей даты Technik_spat Скриптовые языки администрирования Windows 5 15-07-2021 13:35
Разное - Как сравнить две папки по содержимому. Юрий_Нд Программное обеспечение Windows 10 16-08-2019 08:39
CMD/BAT - [решено] Удалить две папки вместе с cmd/bat Dodakaedr Скриптовые языки администрирования Windows 13 11-06-2014 23:06
Помогите сравнить две видеокарты! altr Видеокарты 7 21-12-2008 11:02
Сравнить две материнские платы Urfin Jus Материнские платы и память 3 05-03-2008 12:20




 
Переход