<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Определение количества дней в феврале]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5925&amp;type=atom" />
	<updated>2012-12-16T17:47:56Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5925</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67017#p67017" />
			<content type="html"><![CDATA[<p>Если батник не предполагается использовать более 400 лет, то пойдет вариант с проверкой на делимость года на 4. Всякие 100, 400 и прочие поправки ни к чему.</p>]]></content>
			<author>
				<name><![CDATA[Arigato]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29277</uri>
			</author>
			<updated>2012-12-16T17:47:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67017#p67017</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49269#p49269" />
			<content type="html"><![CDATA[<p>можно не объяснять про содержимое, не то, интересно средствами командного интерпретатора</p><p>конечно так же вариант, но подобное было отброшено на этапе идеи</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2011-06-21T09:00:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49269#p49269</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49268#p49268" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-06-21T08:33:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49268#p49268</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49267#p49267" />
			<content type="html"><![CDATA[<p>xcopy можно и nul задействовать, да и в примере специально не все параметры переданы, так не будет копировать ни при наличии ни при отсутствии файлов</p><p>вариант с вычислением конечно, то же вариант, но не все так просто, как деление на 400, 100 и 4, еще и 128 и еще есть отклонения<br />для практического конечно достаточно, но думается может еще варианты предложит кто.</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2011-06-21T07:33:51Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49267#p49267</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49266#p49266" />
			<content type="html"><![CDATA[<p>Вариант с XCOPY вроде бы хорош, но до того момента пока в текущий каталог не попадется файл, с датой за 29-02-xxxx или позднее. Можно было бы привлечь сторонний язык, например JScript. </p><p>А чем Вам не нравится классический алгоритм вычисления високосного года?</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-06-21T07:14:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49266#p49266</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Определение количества дней в феврале]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49265#p49265" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2011-06-21T06:08:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49265#p49265</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Определение количества дней в феврале]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=49264#p49264" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2011-06-21T06:01:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=49264#p49264</id>
		</entry>
</feed>
