На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Windows
1. Указывайте версию Вашей ОС.
2. Запрещается размещать запросы и ссылки на кряки, серийники и т.п., а также вопросы нарушения лицензии ПО и его взлома.
3. Не разрешается давать советы из разряда "Поставь Linux".
4. Переустановка ОС - крайнее и безотказное лекарство, которое знают все. В таких советах никто не нуждается.
5. При публикации скриптов пользоваться тегами code. Тип подсветки кода выбирать строго в соответствии с языком публикуемого кода.
6. Прежде чем задать вопрос, обязательно загляните в FAQ и следуйте написанным рекомендациям для устранения проблемы. И если не помогло, а поиск по разделу не дал результатов - только тогда задавайте вопрос на форуме.
7. Вопросы, связанные с проблемами ПО, задавайте в разделе Программное обеспечение
Модераторы: Akina
  
> написать 2.bat, который принимает 1 параметр , При запуске 2.bat, запускается предыдущий батник (1.bat), 2.bat передает ему целое число (отрицательное или положительное),программа выводит новую дату.ЗАТЕМ День создания файла больше чем тот день ( чем полученный день).
    Здравствуйте, помогите,пожалуйста. Есть 1.bat в нем написана программа расчета даты (определение текущей даты, затем прибавление или вычитание заданное кол-во дней).Пример: сегодня 20.05.2017, мы запускаем файл
    1.bat 6
    результат будет
    26.05.2016
    если 1.bat -8
    результат будет
    12.05.2017
    Нужно, написать 2.bat, который принимает 1 параметр - целое число (отрицательное или положительное). При запуске 2.bat, запускается предыдущий батник (1.bat), 2.bat передает ему целое число (отрицательное или положительное),программа выводит новую дату.ЗАТЕМ День создания файла больше чем тот день ( чем полученный день).
    1.bat код ниже
    Помогите, пожалуйста!
    @echo off
    echo.
    if not "%OS%"=="Windows_NT" goto syntax
    set error=0
    if "%1"=="" goto syntax
    if not "%3"=="" goto syntax
    for /f "tokens=4" %%a in ('echo. ^| date ^| find "дата*"') do set pDate=%%a
    if "%2"=="" (
    set cDate=%pDate%
    set cDays=%1
    ) else (
    set cDate=%1
    set cDays=%2
    )

    call :ReadDateFormat

    (echo.%cDate%) | findstr /R /B /C:"[0-9]*\%sDate%[0-9]*\%sDate%[0-9]*" >NUL
    if errorlevel 1 (
    echo error: %cDate% - Неправильная дата
    echo.
    goto syntax
    )
    (echo.%cDays%) | findstr /R /B /C:"-*[0-9]*" >NUL
    if errorlevel 1 (
    echo error: %cDays% -Неправильное целое
    echo.
    goto syntax
    )
    call :ParseDate %cDate%
    if %error% NEQ 0 goto syntax
    call :JDate %GYear% %GMonth% %GDay%
    echo Ќ*з*«м**п ¤*в*: %cDate%
    if "%cDays:~0,1%"==" " (
    set /A NewJDate=%JDate% - %cDays:~1%
    echo Кол-во отнытых дней: %cDays:~1%
    ) else (
    set /A NewJDate=%JDate% + %cDays%
    echo Кол-во прибавленных дней: %cDays%
    )
    call :GDate %NewJDate%
    call:ReformatDate %GDate%
    echo Окончательная дата*: %LDate%
    goto:eof
    :ReadDateFormat
    start /W Regedit /E "%TEMP%.\_TEMP.REG" "HKEY_CURRENT_USER\control Panel\International"
    for /f "tokens=1* delims==" %%A in ('TYPE "%TEMP%.\_TEMP.REG"^|find /I "iDate"') do set iDate=%%B
    for /f "tokens=1* delims==" %%A in ('TYPE "%TEMP%.\_TEMP.REG"^|find /I "sDate"') do set sDate=%%B
    DEL "%TEMP%.\_TEMP.REG"
    set iDate=%iDate:"=%
    set sDate=%sDate:"=%
    goto:eof

    :gdate
    set /a p=%1 + 68569
    set /a p1=p*4
    set /a q=p1/146097
    set /a q1=146097*q+3
    set /a r=p-q1/4
    set /a r1=r+1
    set /a r2=4000*r1
    set /a s=r2/1461001
    set /a s1=1461*s
    set /a t=%r%-s1/4+31
    set /a t1=80*t
    set /a u=t1/2447
    set /a v=u/11
    set /a v1=q-49
    set /a v2=2447*u
    set /a gyear=100*v1+s+v
    set /a gmonth=u+2-12*v
    set /a gday=t-v2/80
    for %%a in (p q q1 q2 r r1 r2 s s1 t t1 u v v1 v2) do set %%a=
    if 1%gmonth% LSS 20 set gmonth=0%gmonth%
    if 1%gday% LSS 20 set gday=0%gday%
    set gdate=%gyear% %gmonth% %gday%
    goto:eof

    :jdate
    SET MM=%2
    SET DD=%3
    IF %MM:~0,1% EQU 0 SET MM=%MM:~1%
    IF %DD:~0,1% EQU 0 SET DD=%DD:~1%
    set /a m1=%MM%-14
    SET /A Month1=m1/12
    SET /A Year1=%1+4800
    set /a b1=%Year1%+%Month1%
    set /a b2=1461*b1
    set /a b=b2/4
    set /a c1=%MM%-2-12*%Month1%
    set /a c2=367*c1
    set /a c=c2/12
    set /a d1=%Year1%+%Month1%+100
    set /a d2=d1/100
    set /a d3=3*d2
    set /a d=d3/4
    set /a jdate=b+c-d+%DD%-32075
    For %%A in (Month1 Year1 b b1 b2 c c1 c2 d d1 d2 d3) do set %%A=
    goto:eof
    :ParseDate
    IF %iDate%==0 For /f "tokens=1-3 delims=%sDate%" %%A in ('echo.%1') DO (
    SET GYear=%%C
    SET GMonth=%%A
    SET GDay=%%B
    )
    IF %iDate%==1 For /f "tokens=1-3 delims=%sDate%" %%A in ('echo.%1') DO (
    SET GYear=%%C
    SET GMonth=%%B
    SET GDay=%%A
    )
    IF %iDate%==2 For /f "tokens=1-3 delims=%sDate%" %%A in ('echo.%1') DO (
    SET GYear=%%A
    SET GMonth=%%B
    SET GDay=%%C
    )
    IF %GDay% GTR 31 set error=1
    IF %GMonth% GTR 12 set error=1
    goto:eof
    :ReadDateFormat
    start /W Regedit /E "%TEMP%.\_TEMP.REG" "HKEY_CURRENT_USER\Control Panel\International"
    for /f "tokens=1* delims==" %%A in ('type %TEMP%.\_TEMP_REG"^| find /I "iDate"') do set iDate=%%B
    for /f "tokens=1* delims==" %%A in ('type %TEMP%.\_TEMP_REG"^| find /I "sDate"') do set iDate=%%B
    DEL "%TEMP%.\_TEMP.REG"
    SET iDate=%iDate:"=%
    SET sDate=%sDate:"=%
    goto:eof

    :ReformatDate
    If %iDate%==0 set LDate=%2%sDate%%3%sDate%%1
    If %iDate%==1 set LDate=%3%sDate%%2%sDate%%1
    If %iDate%==2 set LDate=%1%sDate%%2%sDate%%3
    goto:eof

    :syntax
    echo dateadd.bat - программа прибавления (вычитание) указанного количества дней
    echo k (от) Указанной даты. Если дата не указана, то берется текущая дата
    echo Пример запуска:
    echo dateadd 12.03.2009 42
    echo.
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0187 ]   [ 15 queries used ]   [ Generated: 25.04.24, 01:58 GMT ]