<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; WSH: работа с содержимым текстового файла]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=8370</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8370&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «WSH: работа с содержимым текстового файла».]]></description>
		<lastBuildDate>Thu, 06 Jun 2013 09:51:30 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72788#p72788</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>если бы тоже самое, но на VBScript, то было бы супер</p></blockquote></div><p>Это принципиально? На JS будет несколько компактнее/лаконичнее/понятнее, но VBS гибче, если необходимо читать non-ASCII символы. </p><p>Вот еще несколько вариантов. Во всех вариантах addedLines - фейковая строка, которую надо изменить; хранилище данных, добавляемых в конце набора - может быть переменная или результат выполнения функции, &quot;добывающей&quot; новые данные. Общий способ вызова<br /></p><div class="codebox"><pre><code>
cscript //nologo script.vbs &lt;input_file &gt;output_file
</code></pre></div><p>В обоих вариантах возможны вариации (с регулярным выражением, без него)</p><p>Считывая весь файл &quot;за один присест&quot;<br /></p><div class="codebox"><pre><code>
option explicit
dim addedLines, stdin, stdout, re, line

addedLines = &quot;[111]&quot;

set stdin = WScript.StdIn
set stdout = WScript.StdOut

set re = new RegExp
re.Pattern = &quot;(\])(\r\n)(\])&quot;

line = stdin.ReadAll
line = re.Replace(line, &quot;$1,$2&quot; &amp; addedLines &amp; &quot;$2$3&quot;)

stdout.Write line
</code></pre></div><p>Считывая файл построчно<br /></p><div class="codebox"><pre><code>
option explicit
dim addedLines, stdin, stdout, re, line

addedLines = &quot;[111]&quot;

set stdin = WScript.StdIn
set stdout = WScript.StdOut

set re = new RegExp
re.Pattern = &quot;.+\]$&quot;

do while not stdin.AtEndOfStream
    line = stdin.ReadLine

    stdout.Write line
    if re.Test(line) then
        stdout.WriteLine &quot;,&quot;
        stdout.Write addedLines
    end if
    stdout.WriteLine
loop
</code></pre></div><p>Считывая файл построчно (без проверок)<br /></p><div class="codebox"><pre><code>
option explicit

dim addedLines, stdin, stdout, re, line

addedLines = &quot;[111]&quot;

set stdin = WScript.StdIn
set stdout = WScript.StdOut

set re = new RegExp
re.Pattern = &quot;(.+\])$&quot;

do while not stdin.AtEndOfStream
    line = stdin.ReadLine

    line = re.Replace(line, &quot;$1,&quot; &amp; vbNewLine &amp; addedLines)
    stdout.WriteLine line
loop
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 06 Jun 2013 09:51:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72788#p72788</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72782#p72782</link>
			<description><![CDATA[<p><strong>d_alexei</strong><br />Я же специально красным выделил двойку. А в коде предыдущего поста опять стоит восьмёрка. В последнем уже как надо.<br />C Readall просто гораздо быстрее, чем склеивать построчно. Можно и без него сделать, конечно.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Thu, 06 Jun 2013 08:41:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72782#p72782</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72780#p72780</link>
			<description><![CDATA[<p>всем спасибо, но как бы я не хотел уйти от ReadAll , у меня не получилось <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /><br />Вот тот скрипт, который в итоге заработал как надо :</p><div class="codebox"><pre><code>Const ForReading = 1
Const ForWriting = 2
Set wshshell = CreateObject(&quot;wscript.shell&quot;)
UsrProfDir = &quot;c:\&quot;

ReplaceSource = &quot;]&quot; &#039;??? ????
Replacetarget = &quot;{{{{{{&quot; &#039; ?? ??? ??????

Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objFile = objFSO.OpenTextFile(UsrProfDir &amp; &quot;\Test.txt&quot;, ForReading)

strText = objFile.ReadAll
objFile.Close

NL = vbNewLine

strNewText = Replace(strText, &quot;]&quot; &amp; NL &amp; &quot;]&quot;, &quot;],&quot; &amp; NL &amp; &quot;[insert value]&quot; &amp; NL &amp; &quot;]&quot;)
&#039;strNewText = Replace(strText, ReplaceSource, Replacetarget)

Set objFile = objFSO.OpenTextFile(UsrProfDir &amp; &quot;\Test.txt&quot;, ForWriting)
objFile.WriteLine strNewText
objFile.Close</code></pre></div><p>посмотрим, что будет при объемах в 10-20-30 тыс. строк.</p>]]></description>
			<author><![CDATA[null@example.com (d_alexei)]]></author>
			<pubDate>Thu, 06 Jun 2013 08:25:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72780#p72780</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72776#p72776</link>
			<description><![CDATA[<p>Итого, получается :</p><div class="codebox"><pre><code>Set wshshell = CreateObject(&quot;wscript.shell&quot;)
Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set File = FSO.GetFile(&quot;C:\test.txt&quot;)
Set TextStream = File.OpenAsTextStream(1)
&#039;Str = vbNullString
&#039;While Not TextStream.AtEndOfStream
&#039;    Str = Str &amp; TextStream.Line &amp; &quot; : &quot; &amp; TextStream.ReadLine() &amp; vbCrLf
Set objFile = FSO.OpenTextFile(&quot;c:\Test.txt&quot;, 8)
NL = vbNewLine
objFile.Write Replace(TextStream.ReadAll, &quot;]&quot; &amp; NL &amp; &quot;]&quot;, &quot;],&quot; &amp; NL &amp; &quot;[insert value]&quot; &amp; NL &amp; &quot;]&quot;)

    strText = strText + 1
&#039;Wend
TextStream.Close
objFile.Close

</code></pre></div><p>в текстовом файле было :<br /></p><div class="codebox"><pre><code>
[
[1317888000000,372.5101,375,372.2,372.52],
[1317888060000,372.4,373,372.01,372.16],
]
</code></pre></div><p>стало :</p><div class="codebox"><pre><code>[
[1317888000000,372.5101,375,372.2,372.52],
[1317888060000,372.4,373,372.01,372.16],
][
[1317888000000,372.5101,375,372.2,372.52],
[1317888060000,372.4,373,372.01,372.16],
]</code></pre></div><p>а надо :<br /></p><div class="codebox"><pre><code>[
[1317888000000,372.5101,375,372.2,372.52],
[1317888060000,372.4,373,372.01,372.16],
[1317888000000,372.5101,375,372.2,372.52],
[1317888060000,372.4,373,372.01,372.16]
]</code></pre></div><p>т.е. убрать скобки при дописывании, убрать запятую на предпоследней строке после дописывания (иначе не обрабатывается файл). <br />help please!!!!!!!</p><p>PS : только заметил, текст копируется, а должен вставляться из [insert value] (будут данные из БД)</p>]]></description>
			<author><![CDATA[null@example.com (d_alexei)]]></author>
			<pubDate>Thu, 06 Jun 2013 07:37:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72776#p72776</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72774#p72774</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Set objFile = FSO.OpenTextFile(&quot;c:\Test.txt&quot;, <span style="color: red">2</span>)<br />&#039; код выше, а потом уже<br />TextStream.Close<br />objFile.Close</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Thu, 06 Jun 2013 06:32:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72774#p72774</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72773#p72773</link>
			<description><![CDATA[<div class="quotebox"><cite>Flasher пишет:</cite><blockquote><div class="quotebox"><cite>d_alexei пишет:</cite><blockquote><p>Возможно надо делать с поиском и заменой типа replace</p></blockquote></div><div class="codebox"><pre><code>NL = vbNewLine
objFile.Write Replace(TextStream.ReadAll, &quot;]&quot; &amp; NL &amp; &quot;]&quot;, &quot;],&quot; &amp; NL &amp; &quot;[111111111111111111111111]&quot; &amp; NL &amp; &quot;]&quot;)</code></pre></div><p>Вместо &quot;111111111111111111111111&quot; я полагаю, должна быть какая-то переменная.</p></blockquote></div><p>Выходит ошибка на этой строке : Объектная переменная не задана.</p>]]></description>
			<author><![CDATA[null@example.com (d_alexei)]]></author>
			<pubDate>Thu, 06 Jun 2013 06:29:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72773#p72773</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72772#p72772</link>
			<description><![CDATA[<div class="quotebox"><cite>d_alexei пишет:</cite><blockquote><p>Возможно надо делать с поиском и заменой типа replace</p></blockquote></div><div class="codebox"><pre><code>NL = vbNewLine
objFile.Write Replace(TextStream.ReadAll, &quot;]&quot; &amp; NL &amp; &quot;]&quot;, &quot;],&quot; &amp; NL &amp; &quot;[111111111111111111111111]&quot; &amp; NL &amp; &quot;]&quot;)</code></pre></div><p>Вместо &quot;111111111111111111111111&quot; я полагаю, должна быть какая-то переменная.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Thu, 06 Jun 2013 06:10:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72772#p72772</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72771#p72771</link>
			<description><![CDATA[<p>А вот если бы тоже самое, но на VBScript, то было бы супер!!!</p>]]></description>
			<author><![CDATA[null@example.com (d_alexei)]]></author>
			<pubDate>Thu, 06 Jun 2013 05:56:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72771#p72771</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72770#p72770</link>
			<description><![CDATA[<p>пример на <strong>Jscript </strong></p><div class="codebox"><pre><code>var fso = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);
var name=&quot;test.txt&quot;
var f = fso.OpenTextFile(name, 1)
var a = []
while (!f.AtEndOfStream) {
    a[a.length] = f.ReadLine()
}
f.close()
a.length=a.length-1

var add=[
&quot;*318606500000,420.71,420.77,420.41,420.43&quot;,
&quot;*1318606560000,420.43,420.77,420.4,420.44&quot;
]

for (var i=0; i&lt;add.length; i++)
{
if (a.length&gt;1)
a[a.length-1]+=&quot;,&quot;

a[a.length]=&quot;[&quot;+add[i]+&quot;]&quot;
}
a[a.length]=&quot;]&quot;

fso.OpenTextFile(name, 2,true).Write(a.join(&quot;\r\n&quot;))</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (badik)]]></author>
			<pubDate>Thu, 06 Jun 2013 05:45:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72770#p72770</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72765#p72765</link>
			<description><![CDATA[<p><span style="color: Green"><strong>d_alexei</strong>, обратите внимание на префикс заголовка темы, на использование тэга «code», заглавных букв в начале, точек — в конце и знаков препинания — внутри предложений для придания им смысла.</span></p><p><span style="color: Green">Надеюсь, впредь Вы будете делать сие самостоятельно.</span></p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 05 Jun 2013 23:22:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72765#p72765</guid>
		</item>
		<item>
			<title><![CDATA[WSH: работа с содержимым текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=72763#p72763</link>
			<description><![CDATA[<p>Всем привет!!!</p><p>У меня есть тактовый файл с наполнением типа :<br /></p><div class="codebox"><pre><code>[
[1318606500000,420.71,420.77,420.41,420.43],
[1318606560000,420.43,420.77,420.4,420.44],
[1318606620000,420.41,420.58,420.4,420.58],
[1318606680000,420.56,420.63,420.15,420.2]
]
</code></pre></div><p>Надо в предпоследнюю строку дописать в конец строки запятую после скобки, последнюю строку удалить, или переписать заново.</p><p>Т.е. что бы было так :<br /></p><div class="codebox"><pre><code>[1318606680000,420.56,420.63,420.15,420.2],
сюда буду вставлять строки из БД 
]</code></pre></div><p>- скобка обязательна должна быть в конце.</p><p>Вот мой код :<br /></p><div class="codebox"><pre><code>Set wshshell = CreateObject(&quot;wscript.shell&quot;)
Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set File = FSO.GetFile(&quot;C:\test.txt&quot;)
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfStream
    Str = Str &amp; TextStream.Line &amp; &quot; : &quot; &amp; TextStream.ReadLine() &amp; vbCrLf
    strText = strText + 1
Wend
TextStream.Close

Set objFile = FSO.OpenTextFile(&quot;c:\Test.txt&quot;, 8)
objFile.WriteLine (&quot;111111111111111111111111&quot;) 
objFile.Close

WScript.Echo  &quot;Str = &quot; &amp; Str
WScript.Echo  &quot;strText = &quot; &amp; strText
strText_m = strText -1
WScript.Echo  &quot;strText = &quot; &amp; strText_m</code></pre></div><p>strText_m - выводит номер предпоследней строки.</p><p>Возможно надо делать с поиском и заменой типа replace, НО когда я ищу символ &quot;]&quot;, то у меня заменяются все символы во всем файле.</p><p>Просьба помочь, а то убился я на этом коде, а надо очень.</p>]]></description>
			<author><![CDATA[null@example.com (d_alexei)]]></author>
			<pubDate>Wed, 05 Jun 2013 18:30:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=72763#p72763</guid>
		</item>
	</channel>
</rss>
