Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7

Модерирует : KLASS, IFkO

vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
 
@echo off
if "%1"=="" goto :_NO_ARG
if %1 GTR 40000 goto :_ERR_BIG
if %1 LSS -40000 goto :_ERR_SMALL
rem определим, сколько вычитаем....
Set /A Day_minus=%1
if %Day_minus% GTR 0 echo Вычитаем %Day_minus%
if %Day_minus% LEQ 0 echo Вычитаем %Day_minus% (ну, т.е. прибавляем )
 
echo.>"%TEMP%\~.ddf"
makecab /D RptFileName="%TEMP%\~.rpt" /D InfFileName="%TEMP%\~.inf" -f "%TEMP%\~.ddf">nul
 
rem Определим current-date в формате ГГГГ-Месяц(прописью)-День
for /f "tokens=4,5,7" %%a in ('type "%TEMP%\~.rpt"') do if not defined current-date set "current-date=%%c-%%a-%%b"
rem Если нужно - определим день недели (Mon, Thu и т.д.)
rem for /f "tokens=3" %%a in ('type "%TEMP%\~.rpt"') do if not defined weekday set "weekday=%%a"
del /q "%TEMP%\~.*"
 
for /f "delims=- tokens=1,2,3" %%i in ("%current-date%") do call :getpackage %%i %%j %%k
 
rem Собственно, значения....
echo %year%
echo %month%
echo %day%
echo package=%package%
goto :EOF
 
:_NO_ARG
echo Нет аргумента ... Не буду считать
goto :EOF
 
:_ERR_BIG
echo выбранное значение %1 больше 40'000 ... Не буду считать
goto :EOF
 
:_ERR_Small
echo выбранное значение %1 меньше -40'000 ... Не буду считать
goto :EOF
 
 
:getpackage
 
set day=%3
set month=%2
set /a year=%1
 
rem Преобразуем месяц в число
 
if /i "%month%"=="Jan" set /a month=1
if /i "%month%"=="Feb" set /a month=2
if /i "%month%"=="Mar" set /a month=3
if /i "%month%"=="Apr" set /a month=4
if /i "%month%"=="May" set /a month=5
if /i "%month%"=="Jun" set /a month=6
if /i "%month%"=="Jul" set /a month=7
if /i "%month%"=="Aug" set /a month=8
if /i "%month%"=="Sep" set /a month=9
if /i "%month%"=="Oct" set /a month=10
if /i "%month%"=="Nov" set /a month=11
if /i "%month%"=="Dec" set /a month=12
 
set lastdays="31 28 31 30 31 30 31 31 30 31 30 31"
if %day% leq 9 set /a day=%day:~-1%
set /a day=%day%-%Day_minus
 
rem @echo on
if %Day_minus% GTR 0 GOTO :_PRV_MINUS
if %Day_minus% LEQ 0 GOTO :_PRV_PLUS
rem @echo off
 
rem организуем цикл, пока день меньше нуля
:_PRV_MINUS
if %day% LEQ 0 set /a month-=1
if "%month%"=="0" set /a month=12,year-=1
set /a isleap="(year%%4)&((year%%100)|(year%%400))"
if "%isleap%"=="0" (
    set lastdays=%lastdays:28=29%
    ) else (
    set lastdays=%lastdays:29=28%
    )
if %day% LEQ 0 for /f "tokens=%month%" %%i in (%lastdays%) do set /a day=%%i+%day%
if %day% LEQ 0 GOTO :_PRV_MINUS
GOTO :_PRV_END
 
rem организуем цикл, пока день больше последнего в месяце
:_PRV_PLUS
set /a isleap="(year%%4)&((year%%100)|(year%%400))"
if "%isleap%"=="0" set lastdays=%lastdays:28=29%
for /f "tokens=%month%" %%i in (%lastdays%) do set /a lastdaym=%%i
if %day% GTR %lastdaym% set /a month+=1
if %day% GTR %lastdaym% set /a day=%day%-%lastdaym%
if "%month%"=="13" set /a month=1,year+=1
set /a isleap="(year%%4)&((year%%100)|(year%%400))"
if "%isleap%"=="0" (
   set lastdays=%lastdays:28=29%
   ) else (
   set lastdays=%lastdays:29=28%
   )
for /f "tokens=%month%" %%i in (%lastdays%) do set /a lastdaym=%%i
if %day% GTR %lastdaym% GOTO :_PRV_PLUS
 
:_PRV_END
if %day% leq 9 set day=0%day%
if %month% leq 9 set month=0%month%
set package=%year%-%month%-%day%
 


Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 02:52 06-01-2010 | Исправлено: Kirillhome, 02:59 06-01-2010
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах 7
vu1tur (25-01-2010 12:41): лимит страниц, продолжение: http://forum.ru-board.com/topic.cgi?forum=62&topic=19668


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru