<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Отпарсить файл и сравнить]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5548&amp;type=atom" />
	<updated>2011-02-25T06:09:31Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5548</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45531#p45531" />
			<content type="html"><![CDATA[<p>Спасибо <strong>alexii, Rumata, DnsIs<br /></strong><br />Все получилось.</p>]]></content>
			<author>
				<name><![CDATA[cbh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25550</uri>
			</author>
			<updated>2011-02-25T06:09:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45531#p45531</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45522#p45522" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>cbh пишет:</cite><blockquote><p>s=&quot;иду.налево=20110224&quot; это ведь константа в данных примерах, c которой и идет сравнение текущей даты, а нужно прочитать файл. То есть найти в файле &quot;иду.налево=&quot; дата после &quot;=&quot; всегда будет меняться.</p></blockquote></div><p>«s=&quot;иду.налево=20110224&quot;» — это очередная строка, которая читается из файла. Т.е., наподобие:<br /></p><div class="codebox"><pre><code>Do Until objFile.AtEndOfStream
    s = objFile.ReadLine
    …</code></pre></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2011-02-24T19:20:22Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45522#p45522</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45521#p45521" />
			<content type="html"><![CDATA[<p><strong>Rumata, DnsIs</strong><br />спасибо ребята оба варианта, отрабатываются идеально, прямо смотреть приятно...вот только один момент, s=&quot;иду.налево=20110224&quot; это ведь константа в данных примерах, c которой и идет сравнение текущей даты, а нужно прочитать файл. То есть найти в файле &quot;иду.налево=&quot; дата после &quot;=&quot; всегда будет меняться.</p>]]></content>
			<author>
				<name><![CDATA[cbh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25550</uri>
			</author>
			<updated>2011-02-24T18:54:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45521#p45521</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45515#p45515" />
			<content type="html"><![CDATA[<p>OFF: В принципе, можно получить независимый формат: <a href="http://forum.script-coding.com/viewtopic.php?id=5067">VBScript: получение формата дата-время для имени файла</a>. А сравнивать, конечно, нужно так:<br /></p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Лучше сравнивать даты с помощью встроенных функций.</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2011-02-24T16:34:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45515#p45515</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45514#p45514" />
			<content type="html"><![CDATA[<p>Насколько я знаю синтаксис vbs относительно регулярных выражений, настолько он мне кажется неудобным в сравнении с другими языками. Поэтому я не стал приводить пример с ними. </p><p>Мне кажется, что результат CStr(Now) существенно зависит от языковых настроек в системе. Лучше сравнивать даты с помощью встроенных функций.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-02-24T15:24:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45514#p45514</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45513#p45513" />
			<content type="html"><![CDATA[<p>Ну вот, Rumata, меня опередил. Я тоже примерчик накатал. Раскатал строку как с помощью &quot;Mid&quot;, так и с помощью регулярок.<br /></p><div class="codebox"><pre><code>s=&quot;иду.налево=20110224&quot;

Set objRegExp = CreateObject(&quot;VBScript.RegExp&quot;)    &#039;создается объект регулярных выражений
objRegExp.IgnoreCase = True                        &#039;независимость от регистра символов
objRegExp.Pattern = &quot;^иду.налево=(\d{4})(\d\d)(\d\d)&quot;

If objRegExp.Test(s) Then
  a = CStr(Now)
  b = Mid(a,1,2)&amp;Mid(a,4,2)&amp;Mid(a,7,4)
  Set q = objRegExp.Execute(s).Item(0).Submatches
  e = q.Item(2)&amp;q.Item(1)&amp;q.Item(0)
  If e = b Then
    MsgBox &quot;Даты совпали&quot;
  Else
    MsgBox &quot;Даты не совпали&quot;
  End If
Else
    MsgBox &quot;Строки со словами &#039;иду.налево&#039; не найдена&quot;
End If</code></pre></div>]]></content>
			<author>
				<name><![CDATA[DnsIs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26282</uri>
			</author>
			<updated>2011-02-24T14:36:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45513#p45513</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45509#p45509" />
			<content type="html"><![CDATA[<p>Это будет работать при условии, что в строке будут строго 8 цифровых символов и при отсутствии пробелов вокруг знака равенства. <br /></p><div class="codebox"><pre><code>s = &quot;иду.налево=20110224&quot;

p = InStr(s, &quot;=&quot;)
if p = 1 then
    WScript.Echo &quot;Nothing&quot;
    WScript.Quit
end if

sdate = Mid(s, p + 1, 8)
y = Left(sdate, 4)
m = Mid(sdate, 5, 2)
d = Right(s, 2)

d1 = CDate(y &amp; &quot;/&quot; &amp; m &amp; &quot;/&quot; &amp; d)
d2 = Now

WScript.Echo d1
WScript.Echo d2
WScript.Echo DateDiff(&quot;d&quot;, d1, d2)</code></pre></div><p>Мне кажется, что такие вещи решаются с помощью регулярных выражений. Код становится гораздо компактнее и понятнее.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-02-24T14:11:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45509#p45509</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45508#p45508" />
			<content type="html"><![CDATA[<p>Вот кажется нашел другой способ. Возможно так будет легче. Хотя конечно логика расписанная раньше более удачна.<br /></p><div class="codebox"><pre><code>sdate = &quot;20110224&quot;
sday = Right(sdate, 2)</code></pre></div><p>Так как строка всегда имеет строгий формат, в конце всегда стоит день. В принципе мне достаточно будет сравнить текущий день с днем в строке и если отличаются то сгенерить некое событие. Не знаю можно ли сравнивать только день.<br />То есть прочитать вторую строчку, как то так что ли)) (не знаю как прочитать именно вторую строку и именно последние два символа)<br /></p><div class="codebox"><pre><code>Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objFile = objFSO.OpenTextFile(&quot;С:\test.txt&quot;, ForReading)
Const ForReading = 1
Dim arrFileLines()
i = 0
Do Until objFile.AtEndOfStream
Redim Preserve arrFileLines(i)
arrFileLines(i) = objFile.ReadLine
i = i + 1
Loop
objFile.Close
For [b]second [/b] strLine in arrFileLines
sdate = &quot;иду.налево=20101221&quot;
sday = Right(sdate, 2)

Next</code></pre></div><p>Может кому-то придет в голову интересное решение.<br />Буду признателен за любую помощь.</p>]]></content>
			<author>
				<name><![CDATA[cbh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25550</uri>
			</author>
			<updated>2011-02-24T13:28:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45508#p45508</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45507#p45507" />
			<content type="html"><![CDATA[<p>Так кажется нашел DateDiff, позволяет сравнить время.<br />С CDate пока не могу разобраться, в формате применения.</p><p>А вот как распарсить? то есть передать CDate не всю строку, а символы начиная с 15 например? Сам формат файла и количество символов в нем не меняется.</p>]]></content>
			<author>
				<name><![CDATA[cbh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25550</uri>
			</author>
			<updated>2011-02-24T13:13:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45507#p45507</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45505#p45505" />
			<content type="html"><![CDATA[<p>Ссылку на пример можно будет?</p>]]></content>
			<author>
				<name><![CDATA[cbh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25550</uri>
			</author>
			<updated>2011-02-24T11:36:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45505#p45505</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45504#p45504" />
			<content type="html"><![CDATA[<p>Да. Это можно сделать выбранными средствами - Mid, CDate, Now</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2011-02-24T11:33:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45504#p45504</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: Отпарсить файл и сравнить]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=45503#p45503" />
			<content type="html"><![CDATA[<p>Добрый день, задача состоит в том чтобы не просто прочитать и отпарсить строки в файле. Это я сделал без проблем.<br />Есть некий текстовый файл, в нем есть строка, скажем иду.налево=20110224 (формат этой строки одинаковый, меняется лишь дата)<br />А нужна следующая логика:<br />1. Читаем файл<br />2. Если строка в файле начинается с фразы иду.налево, то начинаем парсить после символа =<br />3. Парсим следующим образом первые 4 цифры год, затем 2 месяц и последние 2 день<br />4. После этого самое сложное сравнимаем полученную дату с текущей датой на компьютере.</p><p>Это возможно сделать средствами VBS? у меня наибольшее затруднение вызывают 3 и 4-ый пункт. Подскажите куда копать. Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[cbh]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25550</uri>
			</author>
			<updated>2011-02-24T11:00:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=45503#p45503</id>
		</entry>
</feed>
