<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Редактирование текстового файла (Upd.)]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=6944</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6944&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Редактирование текстового файла (Upd.)».]]></description>
		<lastBuildDate>Tue, 20 Mar 2012 08:44:28 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Редактирование текстового файла (Upd.)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58100#p58100</link>
			<description><![CDATA[<p>Огромное спасибо!!</p><p>Всё работает.<br />Спасибо ещё раз!!</p><p>PS C регулярными выражениями немного прояснилось <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Но вот с переходами и условиями - &quot;IF ... End If&quot; беда просто. <br />Трёхэтажные конструкции выстраиваются - сам чёрт ногу сломит...</p><p>Методом научного тыка подбирал варианты, но вроде-б заработал сценарий. Как и было задумано :-)</p>]]></description>
			<author><![CDATA[null@example.com (_D_V_S_)]]></author>
			<pubDate>Tue, 20 Mar 2012 08:44:28 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58100#p58100</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Редактирование текстового файла (Upd.)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58092#p58092</link>
			<description><![CDATA[<div class="quotebox"><cite>_D_V_S_ пишет:</cite><blockquote><p>... как правильно написать регулярное выражение:<br /></p><div class="codebox"><pre><code>max(тут любое кол-во пробелов или ТАБ-ов)=(тут любое кол-во пробелов или ТАБ-ов)\d+</code></pre></div></blockquote></div><p>Например, так:</p><div class="codebox"><pre><code>objRegExp.Pattern = &quot;max\s*=\s*\d+&quot;</code></pre></div><p>P.S.<br />Изучайте регулярные выражения, тогда не придётся &quot;бегать&quot; по форумам и ждать, пока кто-нибудь захочет ответить на вопрос.<br />Ссылка на справку на этом форуме: <a href="http://www.script-coding.com/WSH/RegExp.html">Объект RegExp</a></p>]]></description>
			<author><![CDATA[null@example.com (Dmitrii)]]></author>
			<pubDate>Tue, 20 Mar 2012 03:53:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58092#p58092</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Редактирование текстового файла (Upd.)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=58081#p58081</link>
			<description><![CDATA[<p>Не подскажешь, как правильно написать регулярное выражение:</p><div class="codebox"><pre><code>max(тут любое кол-во пробелов или ТАБ-ов)=(тут любое кол-во пробелов или ТАБ-ов)\d+</code></pre></div><p>Если не затруднит!</p>]]></description>
			<author><![CDATA[null@example.com (_D_V_S_)]]></author>
			<pubDate>Mon, 19 Mar 2012 17:36:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=58081#p58081</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Редактирование текстового файла (Upd.)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57913#p57913</link>
			<description><![CDATA[<p>Добрый день! Одним из вариантов решения при условии, что соблюдается шаблон строки <em>&quot;max = x&quot;</em> и встречается она <strong>только один раз</strong> в обрабатываемом файле, вижу нахождение оной строки и её подмена:<br />Т.е. в вашем коде замените<br /></p><div class="codebox"><pre><code>strNewText = Replace(strText, strOldText, strNewText)</code></pre></div><p>на<br /></p><div class="codebox"><pre><code>strText1=Split(strText,vbCrLf)
For each strTextPart in strText1
  If Instr(1,strTextPart,&quot;max = &quot;,1)&gt;0 then strTextPart = &quot;max = &quot;&amp;UserName
  strNewText=strNewText &amp; strTextPart &amp; vbCrLf
Next</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Lucky)]]></author>
			<pubDate>Fri, 16 Mar 2012 11:43:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57913#p57913</guid>
		</item>
		<item>
			<title><![CDATA[VBS: Редактирование текстового файла (Upd.)]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=57876#p57876</link>
			<description><![CDATA[<p>Здравствуйте!</p><p>Подскажите плиз. Наваял (по примерам с форумов) скрипт. Он заменяет значения функций в инишнике. Значение можно вводить самому. Но дело в том, что старое значение остаётся - оно следует после нововведённого.</p><p>То есть:</p><p>Имеем в файле строку: <br />max = 200<br />Нам надо чтобы строка приняла вид:<br />max = 100<br />(100 - произвольное значение, вводимое нами с помощью <em>UserName=InputBox(&quot;Макс [max]&quot;,&quot;File.ext&quot;,&quot;ВВОДИТЕ&quot;)</em>)</p><p>Вот операция замены:<br /></p><div class="codebox"><pre><code>strOldText = &quot;max = &quot;
strNewText = &quot;max = &quot;&amp;UserName&amp;&quot;&quot;
strNewText = Replace(strText, strOldText, strNewText)</code></pre></div><p>Строка принимает вид:<br />max = 100 200</p><p>Где max - функция, 100 - нововведённое значение, 200 - старое значение.</p><p>Далее к примеру нам надо поменять значение max на 50.<br />Строка принимает вид:<br />max = 50 100 200</p><p>И строка пухнет... Я нашел выход только с комментарием &quot;;&quot;<br />strNewText = &quot;max = &quot;&amp;UserName&amp;&quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;&quot;</p><p>Строка принимает вид:<br />max = 50&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;100&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ;200</p><p>Хоть и - работает программа с таким инишником... Но это совсем не дело <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p><p>Я совсем новичок в VBS. Прошу помощи.</p><p>Сам скрипт: <br /></p><div class="codebox"><pre><code>Dim fso
Const ForReading = 1
Const ForWriting = 2

Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objFile = objFSO.OpenTextFile(&quot;File.ext&quot;, ForReading)
UserName=InputBox(&quot;Макс [max]&quot;,&quot;File.ext&quot;,&quot;ВВОДИТЕ&quot;) &#039;
strText = objFile.ReadAll
objFile.Close

strOldText = &quot;max = &quot;
strNewText = &quot;max = &quot;&amp;UserName&amp;&quot;                  ;&quot;
strNewText = Replace(strText, strOldText, strNewText)

Set objFile = objFSO.OpenTextFile(&quot;File.ext&quot;, ForWriting) 
objFile.WriteLine strNewText
objFile.Close

&#039;Dim fso
&#039;Const ForReading = 1
&#039;Const ForWriting = 2

Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objFile = objFSO.OpenTextFile(&quot;File.ext&quot;, ForReading) 
UserName=InputBox(&quot;Макс1 [max1]&quot;,&quot;File.ext&quot;,&quot;ВВОДИТЕ&quot;) &#039;
strText = objFile.ReadAll
objFile.Close

strOldText = &quot;max1 = &quot;
strNewText = &quot;max1 = &quot;&amp;UserName&amp;&quot;                  ;&quot;
strNewText = Replace(strText, strOldText, strNewText)

Set objFile = objFSO.OpenTextFile(&quot;File.ext&quot;, ForWriting) 
objFile.WriteLine strNewText

objFile.Close</code></pre></div><p>Тут в конце строки&nbsp; <br /></p><div class="codebox"><pre><code>strNewText = &quot;max1 = &quot;&amp;UserName&amp;&quot;                  ;&quot;</code></pre></div><p>&quot;;&quot; это комментарий. <br />Программа не воспринимает закомментированное старое значение. Иного выхода борьбы со следами старых значений не нашёл... <br />Но хоть что-то <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Только вот плодятся эти комментарии после каждого введённого значения. Строка распухает.</p><p>Мысли:<br />1) Использовать для поиска регулярные выражения. Убейте - не понимаю, как сделать реплейс на инпутбокс в них...<br />2) Сначала удалить найденную строку, а потом на её место записать &quot;max1 = &quot;&amp;UserName&amp;&quot;. Не нашёл как удалять строчки...<br />3) Закомментировать найденную строку, а потом на следующую строку записать &quot;max1 = &quot;&amp;UserName&amp;&quot;. Файл распухнет теперь построчно...<br />4) Мысль работать с копией файла. То есть с самого начала создаётся копия файла в каком-нмбуль каталоге, и при каждом изменении - удаляется текущий файл а на его место копируется исходная копия и все операции проводятся с ней.<br />-То есть: 4-0) создаём папку &quot;BackUp&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4-1) копируем туда File.Ext<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4-2) удаляем исходный File.Ext<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4-3) копируем из BackUp File.ext обратно<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 4-4) конец операции<br />Вопрос: как можно сие провернуть?</p>]]></description>
			<author><![CDATA[null@example.com (_D_V_S_)]]></author>
			<pubDate>Thu, 15 Mar 2012 12:51:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=57876#p57876</guid>
		</item>
	</channel>
</rss>
