|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка Windows 2000/XP/2003 » [решено] Как сделать,что б батник проверял число ? |
|
|
[решено] Как сделать,что б батник проверял число ?
|
|
Старожил Сообщения: 440 |
Нужно что б батник проверял больше сейчас определенной даты или нет.
Тут я вижу несколько проблем : 1 незнаю как вообше дату проверить 2 не знаю как определить больше сейчас орпределенной даты или нет. Ведь число может быть и меньше,а месяц следующий,или даже год |
|
|
Отправлено: 12:52, 12-09-2006 |
|
Железных Дел Мастер Сообщения: 24786
|
Профиль | Сайт | Отправить PM | Цитировать |
|
------- Отправлено: 18:23, 13-09-2006 | #11 |
|
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать Провтикал аналогию
Спасибо! Ешо один глупий вопрос: как присвоит переменной значение дати на n дней (месяцев) больше (меньше) текущей? |
|
------- Отправлено: 22:58, 15-09-2006 | #12 |
|
Железных Дел Мастер Сообщения: 24786
|
Профиль | Сайт | Отправить PM | Цитировать nj_
Цитата:
Цитата:
![]() |
||
|
------- Отправлено: 14:06, 18-10-2006 | #13 |
|
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать Эммммм ребят, сори за офтоп, кто нибудь может поделиться своими источниками (будь то название книги, сылка на электронное издание, какие то статьи в инете и пр.) по написанию bat файлов. А то через поисковик ничего дельного не нашёл. Заранее спасибо за ответ
|
|
Отправлено: 15:39, 18-10-2006 | #14 |
|
Ищу Человека… Сообщения: 420
|
Профиль | Сайт | Отправить PM | Цитировать DarkTiger
Цитата:
![]() |
|
|
------- Отправлено: 16:14, 18-10-2006 | #15 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать ShaddyR
Цитата:
DarkTiger из "избранного": http://www.windowsfaq.ru/content/category/3/7/45 http://www.windowsfaq.ru/content/category/3/19/57/ http://www.microsoft.com/technet/pro.../FAQW2KCP.mspx http://www.robvanderwoude.com/index.html ![]() |
|
|
Отправлено: 13:16, 19-10-2006 | #16 |
|
Пользователь Сообщения: 50
|
Профиль | Отправить PM | Цитировать amel27 Огромное спасибо, уже читаю, написано на доступном языке, кроме последних 2 сылок, потому как англиский знаю плохо
![]() |
|
Отправлено: 18:30, 19-10-2006 | #17 |
|
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
Rem Параметры расчета: кол-во дней (>0!) и направление (+/-)
SET DAYS=730
SET SIGN=+
Rem Установка окружения и цикл расчета
CALL :GetDate
CALL :GetMnthDays
:Start
CALL :NextDay "%SIGN%1"
SET /A DAYS=%DAYS%-1
IF %DAYS% NEQ 0 GOTO :Start
Rem Вывод результата и завершение работы
CALL :ShowDate
EXIT
Rem Перемещение на следующий/предыдущий календарный день
:NextDay
SET /A Day=%Day%%~1
IF %Day% GTR !DOFW! (
CALL :NextMonth +1
CALL :GetMnthDays
SET /A Day=1
)
IF %Day% EQU 0 (
CALL :NextMonth -1
CALL :GetMnthDays
SET /A Day=!DOFW!
)
GOTO :EOF
Rem Расчет года и месяца, отстоящих от заданного
:NextMonth
SET /A MNDF=%Year%*12+%Month%%1
SET /A Year=(%MNDF%-1)/12
SET /A Month=%MNDF%-%Year%*12
GOTO :EOF
Rem Число дней в заданном месяце
:GetMnthDays
IF %Month% EQU 2 (
CALL :IsYearVisok
SET /A DOFW = 28+!VISOK!
) ELSE (
SET NUM=0
FOR %%i IN (31 28 31 30 31 30 31 31 30 31 30 31) DO (
SET /A NUM=!NUM!+1
IF %Month% EQU !NUM! (
SET DOFW=%%i
GOTO :EOF
)
)
)
GOTO :EOF
Rem Проверка года на високосность
:IsYearVisok
SET /A M1=%Year%-(%Year%/4)*4
SET /A M2=%Year%-(%Year%/100)*100
SET /A M3=%Year%-(%Year%/400)*400
SET VISOK=0
IF 0 EQU %M1% IF 0 NEQ %M2% SET VISOK=1
IF 0 EQU %M3% SET VISOK=1
GOTO :EOF
Rem Чтение текущей даты в переменные окружения
:GetDate
FOR /F "tokens=1,3" %%i IN ('REG QUERY "HKCU\Control Panel\International" /s^|findstr /C:"iDate" /C:"sDate"') DO SET %%i=%%j
FOR /F "TOKENS=1-4* DELIMS=%sDate% " %%A IN ('DATE/T') DO (
IF %iDate%==0 (
SET Year=%%C
SET Month=%%A
SET Day=%%B
)
IF %iDate%==1 (
SET Year=%%C
SET Month=%%B
SET Day=%%A
)
IF %iDate%==2 (
SET Year=%%A
SET Month=%%B
SET Day=%%C
)
)
GOTO :EOF
Rem Отображение итоговой даты
:ShowDate
SET Month=0%Month%
SET Month=%Month:~-2%
SET Day=0%Day%
SET Day=%Day:~-2%
IF %iDate%==0 ECHO %Month%%sDate%%Day%%sDate%%Year%
IF %iDate%==1 ECHO %Day%%sDate%%Month%%sDate%%Year%
IF %iDate%==2 ECHO %Year%%sDate%%Month%%sDate%%Day%
GOTO :EOF
|
|
|
Последний раз редактировалось amel27, 20-10-2006 в 10:33. Причина: кометические мелочи Отправлено: 05:51, 20-10-2006 | #18 |
|
Железных Дел Мастер Сообщения: 24786
|
Профиль | Сайт | Отправить PM | Цитировать amel27: силён!
|
|
Отправлено: 10:10, 20-10-2006 | #19 |
|
Ищу Человека… Сообщения: 420
|
Профиль | Сайт | Отправить PM | Цитировать Немного дополнил ф-цию получения текущей даты из поста 18. Дополнение связано с различием в отображении даты в зависимости от sLongDate и sShortDate. Я обошелся без необходимости проверки этих параметров в реестре, а поступил проще (правда, понадобилась лишняя переменная).
Rem Чтение текущей даты в переменные окружения
:GetDate
for /f "tokens=1,3" %%j in ('reg query "HKCU\Control Panel\International" /s^|findstr /C:"iDate" /C:"sDate"') do set %%j=%%k
for /f %%j in ('echo %date%^|find " " /C') do (
if %%j == 1 (
for /f "tokens=2 delims= " %%j in ('echo %date%') do set mdate=%%j
) else (
set mdate=%date%
)
)
for /f "tokens=1,2,3 delims=%sDate%" %%j in ('echo %mdate%') do (
if %iDate%==0 (
set Month=%%j
set Day=%%k
set Year=%%l
)
if %iDate%==1 (
set Day=%%j
set Month=%%k
set Year=%%l
)
if %iDate%==2 (
set Year=%%j
set Month=%%k
set Day=%%l
)
)
goto :EOF
Rem Установка даты :SetDate if %iDate%==0 ( date %Month%%sDate%%Day%%sDate%%Year% ) else ( if %iDate%==1 ( date %Day%%sDate%%Month%%sDate%%Year% ) else ( if %iDate%==2 ( date %Year%%sDate%%Month%%sDate%%Day% ) ) ) goto :EOF |
|
------- Последний раз редактировалось Sanja Alone, 13-07-2007 в 13:28. Отправлено: 11:50, 11-07-2007 | #20 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| Любой язык - [решено] как сделать чтоб программа думала что системное время не то что на часах? | mitiya | Скриптовые языки администрирования Windows | 2 | 13-01-2010 17:29 | |
| CMD/BAT - [решено] Как создать бат, чтобы проверял число месяца? | Ingolder | Скриптовые языки администрирования Windows | 7 | 07-12-2009 21:28 | |
| CMD/BAT - [решено] Подскажите, как сделать что бы CMD записывал файл на флеху? | ofcoss | Скриптовые языки администрирования Windows | 2 | 16-07-2009 11:20 | |
| Интернет - [решено] Как сделать так что бы подключение по VPN было автоматическое. | Butunin Klim | Microsoft Windows 2000/XP | 19 | 16-12-2008 20:15 | |
| [решено] Как сделать что б иконка WM11 отображалась в трее? | Bester | Программное обеспечение Windows | 2 | 06-02-2008 22:22 | |
|