<?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: Как разбить строки txt на отдельные переменные?]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7870</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7870&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Как разбить строки txt на отдельные переменные?».]]></description>
		<lastBuildDate>Mon, 17 Dec 2012 14:01:13 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=67070#p67070</link>
			<description><![CDATA[<p>Проверил — работает.</p><p>Количество файлов соответствует заявленному в kolvo.txt?<br />По-хорошему, «<strong>echo Переменные</strong>…» следовало бы включить в<br />«<strong>if exist &quot;!sFile_1!&quot;</strong>»…</p><p>В файлах между строками нет пропусков? — Если на вход SET /P подать пустую строку, то переменная сохранит прежнее значение, поэтому, по-хорошему, перед каждым считыванием строки в переменную, следовало бы её очищать (удалять).</p><br /><div class="codebox"><pre><code>@echo off
setlocal ENABLEDELAYEDEXPANSION

set /p sKol=&lt;C:\kolvo.txt

for /l %%i in (1,1,%sKol%) do (
 set sFile_1=C:\file_%%i.txt

 if exist &quot;!sFile_1!&quot; (
   (
      set sFname_1=
      set /p sFname_1=
      set sFname_2=
      set /p sFname_2=
      set sFname_3=
      set /p sFname_3=
      set sFname_4=
      set /p sFname_4=
      set sFname_5=
      set /p sFname_5=
   ) &lt;&quot;!sFile_1!&quot; &gt;nul 
   echo 00000000-0000-0000-000!sFname_1!-!sFnami_2!!sFname_3!!sFname_4!!sFname_5!
 )
)
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Mon, 17 Dec 2012 14:01:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=67070#p67070</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=67063#p67063</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>А так:<br /> </p><div class="codebox"><pre><code>@echo Переменные: !sFname_1! \ !sFname_2! \ !sFname_3! \ !sFname_4! \ !sFname_5! </code></pre></div><p> ?</p></blockquote></div><p>и так тоже не работает <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (basmanov)]]></author>
			<pubDate>Mon, 17 Dec 2012 13:27:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=67063#p67063</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=67037#p67037</link>
			<description><![CDATA[<div class="quotebox"><cite>basmanov пишет:</cite><blockquote><div class="codebox"><pre><code> @echo Переменные: %sFname_1% \ %sFname_2% \ %sFname_3% \ %sFname_4% \ %sFname_5%</code></pre></div><p>попробовал на нескольких файлах, выводит переменные только из 3го файла... <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p></blockquote></div><p>А так:<br /></p><div class="codebox"><pre><code> @echo Переменные: !sFname_1! \ !sFname_2! \ !sFname_3! \ !sFname_4! \ !sFname_5!</code></pre></div><p>?</p><p>Ты всё-таки не знаешь об отложенном раскрытии <img src="//forum.script-coding.com/img/smilies/hmm.png" width="15" height="15" />:<br /></p><div class="quotebox"><cite>SETLOCAL /? пишет:</cite><blockquote><p>ENABLEDELAYEDEXPANSION / DISABLEDELAYEDEXPANSION включает или отключает<br />отложенное расширение переменной среды.&nbsp; См. <span class="bbu"><strong>SET /?</strong></span> для подробного объяснения.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Mon, 17 Dec 2012 08:44:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=67037#p67037</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=67036#p67036</link>
			<description><![CDATA[<div class="codebox"><pre><code>setlocal ENABLEDELAYEDEXPANSION

set /p sKol=&lt;C:\kolvo.txt

for /l %%i in (1,1,%sKol%) do (
 set sFile_1=C:\file_%%i.txt

 if exist &quot;!sFile_1!&quot; &lt;&quot;!sFile_1!&quot; &gt;nul (
    set /p sFname_1=
    set /p sFname_2=
    set /p sFname_3=
    set /p sFname_4=
    set /p sFname_5=
 )
 @echo Переменные: %sFname_1% \ %sFname_2% \ %sFname_3% \ %sFname_4% \ %sFname_5%
)</code></pre></div><p>попробовал на нескольких файлах, выводит переменные только из 3го файла... <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p><p>а вот моя конструкция работает нормально, остался вопрос как использовать к примеру экранировать sFname%%i_1<br />т.к. %sFname%%i_1% - не канает <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p><div class="codebox"><pre><code>for /l %%i in (1,1,%sKol%) do (
 set sTempFile=C:\TempFile.tmp

 if exist &quot;C:\file_%%i.txt&quot; (
    &lt;&quot;C:\file_%%i.txt&quot; set /p sFname%%i_1=&gt;nul
    more +1 &quot;C:\file_%%i.txt&quot;&gt;&quot;%sTempFile%&quot;
    &lt;&quot;%sTempFile%&quot; set /p sFname%%i_2=&gt;nul
    more +2 &quot;C:\file_%%i.txt&quot;&gt;&quot;%sTempFile%&quot;
    &lt;&quot;%sTempFile%&quot; set /p sFname%%i_3=&gt;nul
    more +3 &quot;C:\file_%%i.txt&quot;&gt;&quot;%sTempFile%&quot;
    &lt;&quot;%sTempFile%&quot; set /p sFname%%i_4=&gt;nul
    more +4 &quot;C:\file_%%i.txt&quot; &gt; &quot;%sTempFile%&quot;
    &lt;&quot;%sTempFile%&quot; set /p sFname%%i_5=&gt;nul
    del &quot;%sTempFile%&quot;
    )
)
</code></pre></div><p>хочется чтобы были переменные в виде 00000000-0000-0000-000<strong>1-0051a37dd363</strong><br />типа:<br /></p><div class="codebox"><pre><code>set /p sFullFile%%iName= 00000000-0000-0000-000%sFname%%i_1%-%sFname%%i_2%%sFname%%i_3%%sFname%%i_4%%sFname%%i_5% </code></pre></div>]]></description>
			<author><![CDATA[null@example.com (basmanov)]]></author>
			<pubDate>Mon, 17 Dec 2012 08:04:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=67036#p67036</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=66978#p66978</link>
			<description><![CDATA[<div class="quotebox"><cite>basmanov пишет:</cite><blockquote><p>перенес скобочку</p></blockquote></div><p>Да, это было обязательно!<br /></p><div class="quotebox"><cite>smaharbA пишет:</cite><blockquote><p>но отложенная обработка подойдет</p></blockquote></div><p>+1<br /></p><div class="codebox"><pre><code>setlocal ENABLEDELAYEDEXPANSION
...
for /l %%i in (1,1,%sKol%) do (
 set sFile%%i=C:\file_%%i.txt
...
 if exist &quot;!sFile%%i!&quot; (
 ...
 )
 ...
)</code></pre></div><p>Но зачем вообще создавать при каждой итерации новую переменную <em>sFile%%i</em>, если бы можно было бы ограничиться <em>sFile_1</em>.</p><p><strong>basmanov</strong>, и зачем было заимствовать у <strong>alexii</strong> извращения с more +4 и %sTempFile%, я ведь нарочно дал ссылку не на всю тему, а на сообщение #12 из неё, в котором предложен естественный подход.</p><p>Что-то вроде такого<br /></p><div class="codebox"><pre><code>setlocal ENABLEDELAYEDEXPANSION

set /p sKol=&lt;C:\kolvo.txt

for /l %%i in (1,1,%sKol%) do (
 set sFile_1=C:\file_%%i.txt

 if exist &quot;!sFile_1!&quot; &lt;&quot;!sFile_1!&quot; &gt;nul (
    set /p sFname_1=
    set /p sFname_2=
    set /p sFname_3=
    set /p sFname_4=
    set /p sFname_5=
 )
 
)</code></pre></div><p>И не надо засорять память, создавая при каждом проходе цикла новые переменные.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Sat, 15 Dec 2012 00:00:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=66978#p66978</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=66973#p66973</link>
			<description><![CDATA[<p>ничё не понял, но отложенная обработка подойдет</p>]]></description>
			<author><![CDATA[null@example.com (smaharbA)]]></author>
			<pubDate>Fri, 14 Dec 2012 15:14:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=66973#p66973</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=66969#p66969</link>
			<description><![CDATA[<p>перенес скобочку<br /></p><div class="codebox"><pre><code>
for /l %%i in (1,1,%sKol%) do (
</code></pre></div><p>но переменные не именует <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (basmanov)]]></author>
			<pubDate>Fri, 14 Dec 2012 08:16:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=66969#p66969</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=66966#p66966</link>
			<description><![CDATA[<p>возникла проблема что количество файлов <strong>out_N.txt</strong> может быть всегда разное, но подсчитать их не проблема... <br />как правильно использовать цикл, чтобы переменные именовались по порядку?<br />код типа не дает нужного результата:<br /></p><div class="codebox"><pre><code>
set sFile=C:\kolvo.txt
if exist &quot;%sFile%&quot; &lt;&quot;%sFile%&quot; set /p sKol=&gt;nul

for /l %%i in (1,1,%sKol%) do
(
 set sFile%%i=C:\file_%%i.txt
 set sTempFile=C:\TempFile.tmp

 if exist &quot;%sFile%%i%&quot; (
    &lt;&quot;%sFile%%i%&quot; set /p sFname%%i_1=&gt;nul
    more +1 &quot;%sFile%%i%&quot;&gt;&quot;%sTempFile%&quot;
    &lt;&quot;%sTempFile%&quot; set /p sFname%%i_2=&gt;nul
    more +2 &quot;%sFile%%i%&quot;&gt;&quot;%sTempFile%&quot;
    &lt;&quot;%sTempFile%&quot; set /p sFname%%i_3=&gt;nul
    more +3 &quot;%sFile%%i%&quot;&gt;&quot;%sTempFile%&quot;
    &lt;&quot;%sTempFile%&quot; set /p sFname%%i_4=&gt;nul
    more +4 &quot;%sFile%%i%&quot;&gt;&quot;%sTempFile%&quot;
    &lt;&quot;%sTempFile%&quot; set /p sFname%%i_5=&gt;nul
    del &quot;%sTempFile%&quot;
    )
)
</code></pre></div><p>где ошибся в синтаксисе?</p>]]></description>
			<author><![CDATA[null@example.com (basmanov)]]></author>
			<pubDate>Fri, 14 Dec 2012 06:36:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=66966#p66966</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=66901#p66901</link>
			<description><![CDATA[<div class="quotebox"><cite>wisgest пишет:</cite><blockquote><p><a href="http://forum.script-coding.com/viewtopic.php?pid=65957#p65957">http://forum.script-coding.com/viewtopi … 957#p65957</a></p></blockquote></div><p>спасибо.</p>]]></description>
			<author><![CDATA[null@example.com (basmanov)]]></author>
			<pubDate>Wed, 12 Dec 2012 09:56:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=66901#p66901</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=66898#p66898</link>
			<description><![CDATA[<p><a href="http://forum.script-coding.com/viewtopic.php?pid=65957#p65957">http://forum.script-coding.com/viewtopi … 957#p65957</a></p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Wed, 12 Dec 2012 09:15:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=66898#p66898</guid>
		</item>
		<item>
			<title><![CDATA[CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=66896#p66896</link>
			<description><![CDATA[<p>прочитал кучу тем по этому поводу, но своей задачи не нашел:<br />есть out_1.txt вида:<br /></p><div class="codebox"><pre><code>
 10
051
A37
DD3
5F 
</code></pre></div><p>и out_2.txt:<br /></p><div class="codebox"><pre><code>
  1
005
1A3
7DD
363
</code></pre></div><p>из них нужно получить 2 переменные вида (путь и имя файла):<br />\\share\000\000\000\000\000\000\<strong>010\051\a37\dd3\5f</strong><br />и<br />00000000-0000-0000-000<strong>1-0051a37dd363</strong><br />подскажите как вытащить определенную по счету строку в переменную?</p>]]></description>
			<author><![CDATA[null@example.com (basmanov)]]></author>
			<pubDate>Wed, 12 Dec 2012 08:10:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=66896#p66896</guid>
		</item>
	</channel>
</rss>
