<?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="http://forum.script-coding.com/extern.php?action=feed&amp;tid=6572&amp;type=atom" />
	<updated>2012-06-04T23:21:53Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=6572</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=60757#p60757" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[CyberMuesli]]></name>
			</author>
			<updated>2012-06-04T23:21:53Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=60757#p60757</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54789#p54789" />
			<content type="html"><![CDATA[<p><span style="color: Green"><strong>!k</strong>, используйте <a href="http://forum.script-coding.com/help.php#bbcode">тэг «url»</a> для оформления ссылок на форуме. Я поправил Ваш пост.</span></p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2011-12-19T21:45:58Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54789#p54789</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54780#p54780" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[!k]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26608</uri>
			</author>
			<updated>2011-12-19T19:03:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54780#p54780</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54776#p54776" />
			<content type="html"><![CDATA[<p>Представляет академический интерес как образчик &quot;ненормального программирования&quot; реализация ООП на чистом языке интерпретатора.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-12-19T15:18:12Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54776#p54776</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54772#p54772" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Аскет]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25748</uri>
			</author>
			<updated>2011-12-19T14:06:16Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54772#p54772</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Массивы()]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54759#p54759" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-12-19T09:45:41Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54759#p54759</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Массивы()]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=54756#p54756" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Аскет]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25748</uri>
			</author>
			<updated>2011-12-19T09:11:17Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=54756#p54756</id>
		</entry>
</feed>
