<?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>http://forum.script-coding.com/viewtopic.php?id=6572</link>
		<atom:link href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=6572&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Массивы()».]]></description>
		<lastBuildDate>Mon, 04 Jun 2012 23:21:53 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=60757#p60757</link>
			<description><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>В своем примере я использовал &quot;точечную&quot; нотацию arr.i в отличие от общепринятой &quot;скобочной&quot; arr[i].</p></blockquote></div><p>Эта же идея применима для обращения к полям записей record.field</p><div class="codebox"><pre><code>@echo off
:: (C) CyberMuesli

:demo
setlocal enabledelayedexpansion

call :GetFileInfo .\%~nx0 ArcFile
call :DisplayFileInfo ArcFile


goto :eof

::===========================================================================
:GetFileInfo
::===========================================================================
:: %1: filename %2: VarName
:: return: VarName.Origin VarName.Drive VarName.Path... etc

set %2.Origin=%1
for %%i in (%1) do (
   set %2.Drive=%%~di
   set %2.Path=%%~pi
   set %2.DPath=%%~dpi
   set %2.PNX=%%~fi
   set %2.NX=%%~nxi
   set %2.DT=%%~ti
   set %2.Size=%%~zi
)

if not &quot;!%2.DT!&quot;==&quot;&quot; (
   set %2.Year=!%2.DT:~6,4!
   set %2.Month=!%2.DT:~3,2!
   set %2.Day=!%2.DT:~0,2!
   set %2.HH=!%2.DT:~11,2!
   set %2.MM=!%2.DT:~14,2!
   set %2.SS=00
   rem call :dt2sec &quot;%DATE% %TIME%&quot; Now.DTSec
   rem call :dt2sec &quot;!%2.DT!.00&quot;     %2.DTSec
   rem set /a %2.ModifyedSecAgo=Now.DTSec-%2.DTSec
)
goto :eof

::===========================================================================
:DisplayFileInfo
::===========================================================================
echo %1.Origin        !%1.Origin!
echo %1.Drive        !%1.Drive! 
echo %1.Path        !%1.Path!  
echo %1.DPath        !%1.DPath!  
echo %1.PNX        !%1.PNX!
echo %1.NX        !%1.NX!
echo %1.DT        !%1.DT!
rem echo %1.DTSec        !%1.DTSec!
echo %1.Size        !%1.Size!
echo %1.Year,Month,Day    !%1.Year!,!%1.Month!,!%1.Day!
echo %1.HH,MM,SS    !%1.HH!,!%1.MM!,!%1.SS!
rem echo %1.ModifyedSecAgo    !%1.ModifyedSecAgo!
goto :eof</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (CyberMuesli)]]></author>
			<pubDate>Mon, 04 Jun 2012 23:21:53 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=60757#p60757</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54789#p54789</link>
			<description><![CDATA[<p><span style="color: Green"><strong>!k</strong>, используйте <a href="http://forum.script-coding.com/help.php#bbcode">тэг «url»</a> для оформления ссылок на форуме. Я поправил Ваш пост.</span></p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Mon, 19 Dec 2011 21:45:58 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54789#p54789</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54780#p54780</link>
			<description><![CDATA[<p><a href="http://www.dostips.com/forum/viewtopic.php?f=3&amp;t=2164">DosTips.com - View topic - Words from a phrase into Variables</a><br /><a href="http://www.dostips.com/forum/viewtopic.php?f=3&amp;t=2490">DosTips.com - View topic - Reverse Parsing</a></p>]]></description>
			<author><![CDATA[null@example.com (!k)]]></author>
			<pubDate>Mon, 19 Dec 2011 19:03:40 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54780#p54780</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54776#p54776</link>
			<description><![CDATA[<p>Представляет академический интерес как образчик &quot;ненормального программирования&quot; реализация ООП на чистом языке интерпретатора.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Mon, 19 Dec 2011 15:18:12 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54776#p54776</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54772#p54772</link>
			<description><![CDATA[<p>Замечательно - просто и гениально, а главное коротко! Спасибо. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Обращение через точку - это здравая мысль, и удобно управлять таким &quot;массивом&quot;.<br />...да и с многомерными массивами тоже всё в порядке</p><p>У меня же получилось не очень - исходя из того что &quot;массив - единое целое&quot;, т.е. одна большая строка,&nbsp; с символом-разделиителем между &quot;иднексами&quot;. А извлечение через <strong>FOR /F &quot;TOKENS=[индекс_в_массиве] DELIMS=,&quot; %%R IN (&quot;%ARR%&quot;) DO .... </strong><br />Вобщем каша с call&#039;ами.</p>]]></description>
			<author><![CDATA[null@example.com (Аскет)]]></author>
			<pubDate>Mon, 19 Dec 2011 14:06:16 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54772#p54772</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54759#p54759</link>
			<description><![CDATA[<p>Сходу... </p><div class="codebox"><pre><code>@echo off

setlocal enabledelayedexpansion

:: инициализировать 10 переменные вида arr.X случайными числами
for /l %%i in ( 0, 1, 9 ) do (
	set /a arr.%%i=!RANDOM!
)

set arr

endlocal</code></pre></div><p>Здесь скорее стоит вопрос о соглашении, что считать массивом и как он должен выглядеть. В своем примере я использовал &quot;точечную&quot; нотацию arr.i в отличие от общепринятой &quot;скобочной&quot; arr[i]. </p><p>Пользуюсь сам именно точечной нотацией. Фактически рассматриваю такие переменные как элементы ассоциативного массива или как пространство имен, за которым удобно следить. Например, есть некоторый &quot;проект&quot;, в котором определен набор переменных, имеющих одинаковый префикс:<br /></p><div class="codebox"><pre><code>
set prefix.param1=%~1
set prefix.param2=%~2

:: удобство отладки
set prefix

:: легко перенапралить на STDERR
set prefix&gt;&amp;2

:: ... или в файл
set prefix&gt;filename.log

:: относительно просто удалить переменные
for /f &quot;tokens=1,* delims==&quot; %%k in ( &#039;set prefix&#039; ) do (
	set %%k=
)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Mon, 19 Dec 2011 09:45:41 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54759#p54759</guid>
		</item>
		<item>
			<title><![CDATA[CMD/BAT: Массивы()]]></title>
			<link>http://forum.script-coding.com/viewtopic.php?pid=54756#p54756</link>
			<description><![CDATA[<p>Приветствую, коллеги.<br />&quot;Прошу подключиться к решению..&quot; необычной задачи: создание и использование массивов в относительно обделённом возможностями языке пакетных файлов.</p><p>Думаю что тема может обрести не только академический интерес &quot;ненормального программирования&quot;, но и вполне реальное практическое применение (обработка множества имён индексированного чего-бы_то_нибыло и т.п.).</p><p>Как пожелание - <strong>Pure-bat</strong>. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Аскет)]]></author>
			<pubDate>Mon, 19 Dec 2011 09:11:17 +0000</pubDate>
			<guid>http://forum.script-coding.com/viewtopic.php?pid=54756#p54756</guid>
		</item>
	</channel>
</rss>
