<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: чтение последних N строк текстового файла]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7209</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7209&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: чтение последних N строк текстового файла».]]></description>
		<lastBuildDate>Sun, 13 May 2012 05:13:31 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: чтение последних N строк текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60272#p60272</link>
			<description><![CDATA[<p>Другим вариантом может стать использование <a href="http://www.microsoft.com/technet/scriptcenter/tools/logparser/default.mspx">Log Parser 2.2</a> (<a href="http://forum.script-coding.com/viewtopic.php?id=947">VBScript: работаем с утилитой LogParser от Microsoft</a>):<br /></p><div class="codebox"><pre><code>Option Explicit

Dim strPath
Dim lngLines

Dim objLogQuery
Dim objCOMTextLineInputContext

Dim strQuery
Dim strText


strPath  = &quot;c:\Temp\Some.txt&quot; &#039; Путь к текстовому файлу
lngLines = 10                 &#039; Количество потребных последних строк

Set objLogQuery                = WScript.CreateObject(&quot;MSUtil.LogQuery&quot;)
Set objCOMTextLineInputContext = WScript.CreateObject(&quot;MSUtil.LogQuery.TextLineInputFormat&quot;)

With objCOMTextLineInputContext
    .codepage       = 1251
    .recurse        = False
    .splitLongLines = False
End With

strQuery = &quot;SELECT TOP &quot; &amp; CStr(lngLines) &amp; &quot; Text, Index FROM &#039;&quot; &amp; strPath &amp; &quot;&#039; ORDER BY Index DESC&quot;
strText  = &quot;&quot;

With objLogQuery.Execute(strQuery, objCOMTextLineInputContext)
    Do Until .atEnd
        With .getRecord
            strText = .getValue(&quot;Text&quot;) &amp; vbCrLf &amp; strText
        End With
        
        .moveNext
    Loop
    
    .close
End With

Set objCOMTextLineInputContext = Nothing
Set objLogQuery                = Nothing

WScript.Echo strText

WScript.Quit 0</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sun, 13 May 2012 05:13:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60272#p60272</guid>
		</item>
		<item>
			<title><![CDATA[VBScript: чтение последних N строк текстового файла]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=60264#p60264</link>
			<description><![CDATA[<p>Основная идея состоит в создании массива из N элементов для хранения последовательно считываемых строк текстового файла и организации на основе этого массива кольца со скользящим началом очереди. Данный скрипт отличает бережное отношение к оперативной памяти, в отличие от простого «.ReadAll()».<br /></p><div class="codebox"><pre><code>Option Explicit

Dim strPath
Dim lngLines

Dim objFSO
Dim objTS

Dim i
Dim j


strPath  = &quot;c:\Temp\Some.txt&quot; &#039; Путь к текстовому файлу
lngLines = 10                 &#039; Количество потребных последних строк

ReDim arrLines(lngLines - 1)  &#039; Массив для организации очереди из считываемых строк

Set objFSO = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objTS  = objFSO.OpenTextFile(strPath)

With objTS
    i = 0
    
    Do Until .AtEndOfStream
        arrLines(i) = .ReadLine()
        
        i = (i + 1) Mod lngLines
    Loop
    
    .Close
End With

Set objTS  = Nothing
Set objFSO = Nothing

For j = 0 To lngLines - 1
    WScript.Echo arrLines((i + j) Mod lngLines)
Next

WScript.Quit 0</code></pre></div><p>Автор идеи — <strong><a href="http://forum.script-coding.com/profile.php?id=26249">shiz</a></strong>.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sun, 13 May 2012 03:37:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=60264#p60264</guid>
		</item>
	</channel>
</rss>
