<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410864&amp;view=findpost&amp;p=3725219</guid>
        <pubDate>Tue, 30 May 2017 08:01:56 +0000</pubDate>
        <title>Нужно, написать 2.bat, который принимает 1 параметр</title>
        <link>https://forum.sources.ru/index.php?showtopic=410864&amp;view=findpost&amp;p=3725219</link>
        <description><![CDATA[Жасмин44: Здравствуйте, помогите,пожалуйста. Есть 1.bat в нем написана программа расчета даты (определение текущей даты, затем прибавление или вычитание заданное кол-во дней).Пример: сегодня 20.05.2017, мы запускаем файл <br>
1.bat 6<br>
результат будет <br>
26.05.2016<br>
если 1.bat -8<br>
результат будет<br>
12.05.2017<br>
Нужно, написать 2.bat, который принимает 1 параметр - целое число (отрицательное или положительное). При запуске 2.bat, запускается предыдущий батник (1.bat), 2.bat передает ему целое число (отрицательное или положительное),программа выводит новую дату.ЗАТЕМ День создания файла больше чем тот день ( чем полученный день).<br>
1.bat код ниже<br>
Помогите, пожалуйста&#33;<br>
@echo off<br>
echo.<br>
if not &quot;%OS%&quot;==&quot;Windows_NT&quot; goto syntax<br>
set error=0<br>
if &quot;%1&quot;==&quot;&quot; goto syntax<br>
if not &quot;%3&quot;==&quot;&quot; goto syntax<br>
for /f &quot;tokens=4&quot; %%a in (&#39;echo. ^| date ^| find &quot;дата*&quot;&#39;) do set pDate=%%a<br>
if &quot;%2&quot;==&quot;&quot; (<br>
set cDate=%pDate%<br>
set cDays=%1<br>
) else (<br>
set cDate=%1<br>
set cDays=%2<br>
)<br>
<br>
call :ReadDateFormat<br>
<br>
(echo.%cDate%) | findstr /R /B /C:&quot;[0-9]*&#092;%sDate%[0-9]*&#092;%sDate%[0-9]*&quot; &gt;NUL<br>
if errorlevel 1 (<br>
echo error: %cDate% - Неправильная дата<br>
echo.<br>
goto syntax<br>
)<br>
(echo.%cDays%) | findstr /R /B /C:&quot;-*[0-9]*&quot; &gt;NUL<br>
if errorlevel 1 (<br>
echo error: %cDays% -Неправильное целое<br>
echo.<br>
goto syntax<br>
)<br>
call :ParseDate %cDate%<br>
if %error% NEQ 0 goto syntax<br>
call :JDate %GYear% %GMonth% %GDay% <br>
echo Ќ*з*«м**п ¤*в*: %cDate%<br>
if &quot;%cDays:~0,1%&quot;==&quot; &quot; (<br>
set /A NewJDate=%JDate% - %cDays:~1%<br>
echo Кол-во отнытых дней: %cDays:~1%<br>
) else (<br>
set /A NewJDate=%JDate% + %cDays%<br>
echo Кол-во прибавленных дней: %cDays%<br>
)<br>
call :GDate %NewJDate%<br>
call:ReformatDate %GDate%<br>
echo Окончательная дата*: %LDate%<br>
goto:eof<br>
:ReadDateFormat<br>
start /W Regedit /E &quot;%TEMP%.&#092;_TEMP.REG&quot; &quot;HKEY_CURRENT_USER&#092;control Panel&#092;International&quot;<br>
for /f &quot;tokens=1* delims==&quot; %%A in (&#39;TYPE &quot;%TEMP%.&#092;_TEMP.REG&quot;^|find /I &quot;iDate&quot;&#39;) do set iDate=%%B<br>
for /f &quot;tokens=1* delims==&quot; %%A in (&#39;TYPE &quot;%TEMP%.&#092;_TEMP.REG&quot;^|find /I &quot;sDate&quot;&#39;) do set sDate=%%B<br>
DEL &quot;%TEMP%.&#092;_TEMP.REG&quot;<br>
set iDate=%iDate:&quot;=%<br>
set sDate=%sDate:&quot;=%<br>
goto:eof<br>
<br>
:gdate<br>
set /a p=%1 + 68569<br>
set /a p1=p*4<br>
set /a q=p1/146097<br>
set /a q1=146097*q+3<br>
set /a r=p-q1/4<br>
set /a r1=r+1<br>
set /a r2=4000*r1<br>
set /a s=r2/1461001<br>
set /a s1=1461*s<br>
set /a t=%r%-s1/4+31<br>
set /a t1=80*t<br>
set /a u=t1/2447<br>
set /a v=u/11<br>
set /a v1=q-49<br>
set /a v2=2447*u<br>
set /a gyear=100*v1+s+v<br>
set /a gmonth=u+2-12*v<br>
set /a gday=t-v2/80<br>
for %%a in (p q q1 q2 r r1 r2 s s1 t t1 u v v1 v2) do set %%a=<br>
if 1%gmonth% LSS 20 set gmonth=0%gmonth%<br>
if 1%gday% LSS 20 set gday=0%gday%<br>
set gdate=%gyear% %gmonth% %gday%<br>
goto:eof<br>
<br>
:jdate<br>
SET MM=%2<br>
SET DD=%3<br>
IF %MM:~0,1% EQU 0 SET MM=%MM:~1%<br>
IF %DD:~0,1% EQU 0 SET DD=%DD:~1%<br>
set /a m1=%MM%-14<br>
SET /A Month1=m1/12<br>
SET /A Year1=%1+4800<br>
set /a b1=%Year1%+%Month1%<br>
set /a b2=1461*b1<br>
set /a b=b2/4<br>
set /a c1=%MM%-2-12*%Month1%<br>
set /a c2=367*c1<br>
set /a c=c2/12<br>
set /a d1=%Year1%+%Month1%+100<br>
set /a d2=d1/100<br>
set /a d3=3*d2<br>
set /a d=d3/4<br>
set /a jdate=b+c-d+%DD%-32075<br>
For %%A in (Month1 Year1 b b1 b2 c c1 c2 d d1 d2 d3) do set %%A=<br>
goto:eof<br>
:ParseDate<br>
IF %iDate%==0 For /f &quot;tokens=1-3 delims=%sDate%&quot; %%A in (&#39;echo.%1&#39;) DO (<br>
SET GYear=%%C<br>
SET GMonth=%%A<br>
SET GDay=%%B<br>
)<br>
IF %iDate%==1 For /f &quot;tokens=1-3 delims=%sDate%&quot; %%A in (&#39;echo.%1&#39;) DO (<br>
SET GYear=%%C<br>
SET GMonth=%%B<br>
SET GDay=%%A<br>
)<br>
IF %iDate%==2 For /f &quot;tokens=1-3 delims=%sDate%&quot; %%A in (&#39;echo.%1&#39;) DO (<br>
SET GYear=%%A<br>
SET GMonth=%%B<br>
SET GDay=%%C<br>
)<br>
IF %GDay% GTR 31 set error=1<br>
IF %GMonth% GTR 12 set error=1<br>
goto:eof<br>
:ReadDateFormat<br>
start /W Regedit /E &quot;%TEMP%.&#092;_TEMP.REG&quot; &quot;HKEY_CURRENT_USER&#092;Control Panel&#092;International&quot;<br>
for /f &quot;tokens=1* delims==&quot; %%A in (&#39;type %TEMP%.&#092;_TEMP_REG&quot;^| find /I &quot;iDate&quot;&#39;) do set iDate=%%B<br>
for /f &quot;tokens=1* delims==&quot; %%A in (&#39;type %TEMP%.&#092;_TEMP_REG&quot;^| find /I &quot;sDate&quot;&#39;) do set iDate=%%B<br>
DEL &quot;%TEMP%.&#092;_TEMP.REG&quot;<br>
SET iDate=%iDate:&quot;=%<br>
SET sDate=%sDate:&quot;=%<br>
goto:eof<br>
<br>
:ReformatDate<br>
If %iDate%==0 set LDate=%2%sDate%%3%sDate%%1<br>
If %iDate%==1 set LDate=%3%sDate%%2%sDate%%1<br>
If %iDate%==2 set LDate=%1%sDate%%2%sDate%%3<br>
goto:eof<br>
<br>
:syntax<br>
echo dateadd.bat - программа прибавления (вычитание) указанного количества дней<br>
echo k (от) Указанной даты. Если дата не указана, то берется текущая дата<br>
echo Пример запуска:<br>
echo dateadd 12.03.2009 42<br>
echo.]]></description>
        <author>Жасмин44</author>
        <category>ПОМОЩЬ СТУДЕНТАМ</category>
      </item>
	
      </channel>
      </rss>
	