<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: Определение количества дней в феврале]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5925</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5925&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Определение количества дней в феврале».]]></description>
		<lastBuildDate>Sun, 16 Dec 2012 17:47:56 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=67017#p67017</link>
			<description><![CDATA[<p>Если батник не предполагается использовать более 400 лет, то пойдет вариант с проверкой на делимость года на 4. Всякие 100, 400 и прочие поправки ни к чему.</p>]]></description>
			<author><![CDATA[null@example.com (Arigato)]]></author>
			<pubDate>Sun, 16 Dec 2012 17:47:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=67017#p67017</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49269#p49269</link>
			<description><![CDATA[<p>можно не объяснять про содержимое, не то, интересно средствами командного интерпретатора</p><p>конечно так же вариант, но подобное было отброшено на этапе идеи</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Tue, 21 Jun 2011 09:00:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49269#p49269</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49268#p49268</link>
			<description><![CDATA[<p>В большинстве языков используется именно этот способ проверки високосного года - деление на 4, 100, 400. </p><p>Вот мой извращенный способ с вычислением на JScript:</p><div class="codebox"><pre><code>@set @x=0 /*!
@set @x=
@echo off

cscript //nologo //e:javascript &quot;%~dpnx0&quot; &quot;%~1&quot; &amp;&amp; (
    echo Обычный 
) || (
    echo Високосный
)

goto :eof */

var y = WScript.Arguments.length ? WScript.Arguments.item(0) : (new Date()).getFullYear();
var d = (new Date(y, 1, 29)).getDate();
var q = Number(d == 29);

WScript.Quit(q);</code></pre></div><p>Суть извращения:<br />Один файл содержит два скрипта, написанные на разных языках - пакетный и JScript. &quot;Внешний&quot; пакетный скрипт вызывает &quot;внутрениий&quot; скрипт и передает номер года. &quot;Внутренний&quot; скрипт вычисляет 29 февраля для указанного года, сравнивает полученный день месяца с числом 29 и выставляет код возврата. Если день равен 29, значит год - високосный, соответственно, код возврата 1, иначе - 0. Далее &quot;внешний&quot; скрипт проверяет код возврата и выполняет соответствующие действия.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Tue, 21 Jun 2011 08:33:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49268#p49268</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49267#p49267</link>
			<description><![CDATA[<p>xcopy можно и nul задействовать, да и в примере специально не все параметры переданы, так не будет копировать ни при наличии ни при отсутствии файлов</p><p>вариант с вычислением конечно, то же вариант, но не все так просто, как деление на 400, 100 и 4, еще и 128 и еще есть отклонения<br />для практического конечно достаточно, но думается может еще варианты предложит кто.</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Tue, 21 Jun 2011 07:33:51 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49267#p49267</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49266#p49266</link>
			<description><![CDATA[<p>Вариант с XCOPY вроде бы хорош, но до того момента пока в текущий каталог не попадется файл, с датой за 29-02-xxxx или позднее. Можно было бы привлечь сторонний язык, например JScript. </p><p>А чем Вам не нравится классический алгоритм вычисления високосного года?</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Tue, 21 Jun 2011 07:14:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49266#p49266</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49265#p49265</link>
			<description><![CDATA[<p>Да еще вариант, без дергания даты</p><div class="codebox"><pre><code>@echo off

set year=2008
set old=%date%
set feb=28
xcopy /d:02-29-%year% 2&gt;&amp;1 | findstr &quot;02-29-%year%&quot; &gt; nul || set feb=29
echo В феврале %year% - %feb% дней
pause
exit /b</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Tue, 21 Jun 2011 06:08:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49265#p49265</guid>
		</item>
		<item>
			<title><![CDATA[CMD/BAT: Определение количества дней в феврале]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=49264#p49264</link>
			<description><![CDATA[<p>Без привлечения утилит, даже типа forfiles</p><p>Варианты<br /></p><div class="codebox"><pre><code>@echo off

set year=2008
set old=%date%
set feb=28
echo. | date 29.02.%year% &gt; nul 2&gt;&amp;1 &amp;&amp; set feb=29
echo. | date %old% &gt; nul 2&gt;&amp;1
echo В феврале %year% - %feb% дней
pause</code></pre></div><p>Но тут проблема, только админ</p><div class="codebox"><pre><code>@echo off

set year=2008
set old=%date%
set feb=28
echo. | date 29.02.%year% 2&gt;&amp;1 | findstr /r /c:&quot;:[\t ]*$&quot; &gt; nul || set feb=29
echo. | date %old% &gt; nul 2&gt;&amp;1
echo В феврале %year% - %feb% дней
pause
exit /b</code></pre></div><p>тут уже как бы и без прав, но хотелось не дергать дату</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Tue, 21 Jun 2011 06:01:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=49264#p49264</guid>
		</item>
	</channel>
</rss>
