<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411426&amp;view=findpost&amp;p=3744708</guid>
        <pubDate>Wed, 11 Oct 2017 17:34:39 +0000</pubDate>
        <title>Чтение настроек из файла</title>
        <link>https://forum.sources.ru/index.php?showtopic=411426&amp;view=findpost&amp;p=3744708</link>
        <description><![CDATA[amk: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=411426&view=findpost&p=3744652'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Jin X &#064; <time class="tag-quote__quoted-time" datetime="2017-10-11T16:56:44+03:00">11.10.17, 13:56</time></span><div class='quote '>Проблема в твоём коде (да и в моём, и в других, которые предлагают) с обработкой символов &#33; и ^, но это можно решить вот так:</div></div> Там в любом случае проблема, ^ либо удваивается, либо интерпретируется, как экранирующий. В результате невозможно обработать список файлов, если в каком-то из имён есть ^.<br>
Поэтому собираюсь переписать свои скрипты на Питон. Там этих текстовых макроподстановок нет.]]></description>
        <author>amk</author>
        <category>Пакетные файлы CMD, BAT</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411426&amp;view=findpost&amp;p=3744652</guid>
        <pubDate>Wed, 11 Oct 2017 13:56:44 +0000</pubDate>
        <title>Чтение настроек из файла</title>
        <link>https://forum.sources.ru/index.php?showtopic=411426&amp;view=findpost&amp;p=3744652</link>
        <description><![CDATA[Jin X: <strong class='tag-b'>amk</strong>, отлично, спасибо. А то я уже вот так хотел сделать:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">@echo off</div><div class="code_line">setlocal EnableExtensions EnableDelayedExpansion</div><div class="code_line">&nbsp;</div><div class="code_line">for /f &quot;eol=# delims== tokens=1*&quot; %%i in (%~dpn0.cfg) do (call :Do set %%i=%%j&amp;echo !%%i!)</div><div class="code_line">exit /b</div><div class="code_line">&nbsp;</div><div class="code_line">:Do</div><div class="code_line">%*&amp;exit /b</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
:)<br>
<br>
Проблема в твоём коде (да и в моём, и в других, которые предлагают) с обработкой символов &#33; и ^, но это можно решить вот так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">@echo off</div><div class="code_line">for /f &quot;eol=# delims== tokens=1*&quot; %%i in (%~dpn0.cfg) do (call set %%i=%%j)</div><div class="code_line">setlocal EnableExtensions EnableDelayedExpansion</div><div class="code_line">if exist &quot;%mainpath%\%mainexe%&quot; echo OK</div></ol></div></div></div></div><br>
А в конфиге для файла с именем <strong class='tag-b'>My^Prog&#33;.exe</strong> писать так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line"># Settings</div><div class="code_line">mainpath=%ProgramFiles(x86)%\MyDir</div><div class="code_line">mainexe=My^^Prog^!.exe</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2017-10-11T14:20:34+00:00">11.10.17, 14:20</time></span></span><br>
Попробовал сейчас... пипец как долго работает эта конструкция&#33;&#33;&#33;<br>
Файл на 125 строк обрабатывается около секунды&#33;&#33;&#33;<br>
Мой вариант тоже не шустряк, но всё же быстрее. Однако &#33; нужно будет заменять уже на ^^&#33;, символ ^ заменяется на ^^, а вот когда оба этих символа встречаются, тогда ^ нужно заменять аж на ^^^^. Жесть&#33;]]></description>
        <author>Jin X</author>
        <category>Пакетные файлы CMD, BAT</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411426&amp;view=findpost&amp;p=3744637</guid>
        <pubDate>Wed, 11 Oct 2017 13:24:22 +0000</pubDate>
        <title>Чтение настроек из файла</title>
        <link>https://forum.sources.ru/index.php?showtopic=411426&amp;view=findpost&amp;p=3744637</link>
        <description><![CDATA[amk: Перед set напиши call. Тогда произойдёт две подстановки.<br>
И появится ещё одна иногда полезная штука - в именах параметров тоже можно будет использовать переменные окружения<br>
<br>
Я кстати пишу немного проще: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">for /f &quot;eol=# delims=&quot; %%i in (%~dpn0.cfg) do call set %%i</div></ol></div></div></div></div>]]></description>
        <author>amk</author>
        <category>Пакетные файлы CMD, BAT</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=411426&amp;view=findpost&amp;p=3744622</guid>
        <pubDate>Wed, 11 Oct 2017 12:44:27 +0000</pubDate>
        <title>Чтение настроек из файла</title>
        <link>https://forum.sources.ru/index.php?showtopic=411426&amp;view=findpost&amp;p=3744622</link>
        <description><![CDATA[Jin X: Вот такой код позволяет читать данные из cfg-файла:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">for /f &quot;eol=# delims== tokens=1*&quot; %%i in (%~dpn0.cfg) do (</div><div class="code_line">&nbsp;&nbsp; &nbsp;set %%i=%%j</div><div class="code_line">)</div></ol></div></div></div></div>записанные в таком формате:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line"># это коммент</div><div class="code_line">mainpath=%ProgramFiles(x86)%\MyDir</div><div class="code_line">mainexe=MyProg.exe</div></ol></div></div></div></div><br>
Но тут есть проблема.<br>
Мы получаем переменные окружения со значениями:<br>
<strong class='tag-b'>mainpath=%ProgramFiles(x86)%&#092;MyDir<br>
mainexe=MyProg.exe</strong><br>
Т.е. как есть. Строка &quot;<em class='tag-i'>%ProgramFiles(x86)%</em>&quot; не раскрывается в &quot;<em class='tag-i'>C:&#092;Program Files (x86)</em>&quot;<br>
Соответственно <strong class='tag-b'>if exist %mainpath%&#092;%mainexe% set found=1</strong> не сработает.<br>
<br>
Что можно изменить в этом коде, чтобы %-переменные раскрывались?<br>
p.s. Мне не нужно просто вывести на экран значение через <strong class='tag-b'>cmd /c echo %mainpath%</strong>, мне надо <em class='tag-i'>заполучить</em> эти значения в переменную окружения...]]></description>
        <author>Jin X</author>
        <category>Пакетные файлы CMD, BAT</category>
      </item>
	
      </channel>
      </rss>
	