<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Редактирование текстового файла (Upd.)]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6944&amp;type=atom" />
	<updated>2012-03-20T08:44:28Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6944</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Редактирование текстового файла (Upd.)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58100#p58100" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[_D_V_S_]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27724</uri>
			</author>
			<updated>2012-03-20T08:44:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58100#p58100</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Редактирование текстового файла (Upd.)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58092#p58092" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Dmitrii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=13351</uri>
			</author>
			<updated>2012-03-20T03:53:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58092#p58092</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Редактирование текстового файла (Upd.)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=58081#p58081" />
			<content type="html"><![CDATA[<p>Не подскажешь, как правильно написать регулярное выражение:</p><div class="codebox"><pre><code>max(тут любое кол-во пробелов или ТАБ-ов)=(тут любое кол-во пробелов или ТАБ-ов)\d+</code></pre></div><p>Если не затруднит!</p>]]></content>
			<author>
				<name><![CDATA[_D_V_S_]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27724</uri>
			</author>
			<updated>2012-03-19T17:36:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=58081#p58081</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Редактирование текстового файла (Upd.)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57913#p57913" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Lucky]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25698</uri>
			</author>
			<updated>2012-03-16T11:43:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57913#p57913</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: Редактирование текстового файла (Upd.)]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=57876#p57876" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[_D_V_S_]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27724</uri>
			</author>
			<updated>2012-03-15T12:51:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=57876#p57876</id>
		</entry>
</feed>
