<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7870&amp;type=atom" />
	<updated>2012-12-17T14:01:13Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7870</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67070#p67070" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2012-12-17T14:01:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67070#p67070</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67063#p67063" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[basmanov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29262</uri>
			</author>
			<updated>2012-12-17T13:27:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67063#p67063</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67037#p67037" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2012-12-17T08:44:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67037#p67037</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=67036#p67036" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[basmanov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29262</uri>
			</author>
			<updated>2012-12-17T08:04:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=67036#p67036</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66978#p66978" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2012-12-15T00:00:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66978#p66978</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66973#p66973" />
			<content type="html"><![CDATA[<p>ничё не понял, но отложенная обработка подойдет</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2012-12-14T15:14:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66973#p66973</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66969#p66969" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[basmanov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29262</uri>
			</author>
			<updated>2012-12-14T08:16:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66969#p66969</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66966#p66966" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[basmanov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29262</uri>
			</author>
			<updated>2012-12-14T06:36:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66966#p66966</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66901#p66901" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[basmanov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29262</uri>
			</author>
			<updated>2012-12-12T09:56:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66901#p66901</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66898#p66898" />
			<content type="html"><![CDATA[<p><a href="http://forum.script-coding.com/viewtopic.php?pid=65957#p65957">http://forum.script-coding.com/viewtopi … 957#p65957</a></p>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2012-12-12T09:15:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66898#p66898</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Как разбить строки txt на отдельные переменные?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=66896#p66896" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[basmanov]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29262</uri>
			</author>
			<updated>2012-12-12T08:10:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=66896#p66896</id>
		</entry>
</feed>
