<?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=14587&amp;type=atom" />
	<updated>2019-03-10T22:21:24Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=14587</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132883#p132883" />
			<content type="html"><![CDATA[<p><strong>alexii</strong>, почему ? Я в своём примере выше сделал отбор по <strong>^sum\s*=\s*([0-9,.\s]+)$</strong>. Так как я далеко не знаток регулярок, возможно это неверно, но дальше значение проверяю на <strong>IsNumeric</strong> для удобства. А вот результат IsNumeric будет уже зависеть от региональных настроек, как я понял. Но автор об этом не спросил и я решил оставить решение этого вопроса на его усмотрение.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2019-03-10T22:21:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132883#p132883</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132878#p132878" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>, тогда хрен мы регуляркой выцепим из текста эту сумму <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" />. Не?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2019-03-10T19:12:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132878#p132878</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132764#p132764" />
			<content type="html"><![CDATA[<p><strong>alexii</strong>, думаю в случае если сумма, например, с дробной частью, а разделитель целой и дробной части в системных настройках указан не такой как в строке.</p><p>Пример - в файле строка &quot;Sum=1500<strong>.</strong>55&quot;, а в системных настройках стоит разделитель &quot;,&quot;. Тогда CCur(&quot;1500.55&quot;) вернёт ошибку.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2019-03-03T22:39:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132764#p132764</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132762#p132762" />
			<content type="html"><![CDATA[<p><strong>NovaRo</strong>, а где тут место исключениям для срабатывания? Я не особо вижу.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2019-03-03T22:19:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132762#p132762</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132730#p132730" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p><strong>panda4x4</strong>, Вам следует прочитать <em>всё</em> содержимое файла в переменную, затем воспользоваться регулярным выражением....</p></blockquote></div><p>Полностью согласен!<br />Такие вещи лучше всего делаются по схеме &quot;вычитываем в массив + обрабатываем регуляркой&quot;. <br />Т.е. построчно вычитываем файл в переменную-массив, а затем регуляркой проверяем - нет ли в строке &quot;мусора&quot; (непечатных символов, пробелов, табов и проч.) а затем уже ищем искомые данные.<br />Вот это &quot;&#039;пропускаем в строке 4 первых символа&quot; - в корне не правильно - завтра&nbsp; у вас в &quot;шапку&quot; файла добавиться коммент&nbsp; или перенос строки/&quot;мусор&quot; от входящих данных, и вся ваша логика пойдет &quot;по бороде&quot;!<br />И вообще, лучше уж делать в Js или Powershell через конструкцию try, catch, finaly - с явной обработкой исключений.</p>]]></content>
			<author>
				<name><![CDATA[NovaRo]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=33786</uri>
			</author>
			<updated>2019-03-03T13:54:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132730#p132730</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132316#p132316" />
			<content type="html"><![CDATA[<p>Я бы наверное так сделал.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2019-02-21T10:14:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132316#p132316</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132306#p132306" />
			<content type="html"><![CDATA[<p>«Неправильно ты, Дядя Фёдор, бутерброд ешь <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> (зачеркнуть) ищешь».</p><p><strong>panda4x4</strong>, Вам следует прочитать <em>всё</em> содержимое файла в переменную, затем воспользоваться регулярным выражением для поиска и получения суммы заказа, которую потом Вы будете сравнивать с искомым ограничением.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2019-02-20T14:39:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132306#p132306</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132287#p132287" />
			<content type="html"><![CDATA[<p>Работает ) Не хватало слэша в конце пути</p><p>&#039;************************************************************************************************ <br />&#039;Скрипт должен искать строку суммы заказа в файле, затем по сумме заказа копировать файл в нужную папку<br />&#039;*********************************************************************************************** </p><p>Option Explicit </p><p>dim oFSO, oFolder, oFolder1, oFile, oFileCopy <br />dim coll <br />dim a, b </p> <br /> <br /><p>set oFSO=CreateObject(&quot;Scripting.FileSystemObject&quot;) &#039;Создаем объектную модель FSO <br />set oFolder=oFSO.GetFolder(&quot;e:\temp\zakaz&quot;) &#039;Даем доступ к папке e:\temp\zakaz\ и создаем объект Folder </p> <br /><p>For Each a in oFolder.Files &#039;Наполняем массив а значениями из папки e:\temp\zakaz\ через свойство объекта Folder.Files <br />coll = a.Path &#039;Узнаем путь к каждому файлу из массива <br />set oFile = oFSO.OpenTextFile(coll, 1, 0)&nbsp; &nbsp;&#039;Открываем файл для чтения <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine<br />oFile.SkipLine<br />oFile.SkipLine<br />oFile.SkipLine <br />oFile.SkipLine<br />oFile.SkipLine <br />oFile.Skip 4&nbsp; &nbsp; &#039;пропускаем в строке 4 первых символа<br />b = oFile.Read (8) &#039;Считываем 10 строку и 7 символов стоки и просваиваем значение переменной b <br />Call MySub <br />oFile.Close &#039;Закрываем файл <br />Next </p><p>Sub MySub &#039;Процедура сортирует файлы в зависимости от содержания переменной b <br />If b&nbsp; &lt; 1500 then <br />MsgBox &quot;Сумма заказа слишком мала &quot;+b<br />&#039;set oFileCopy=oFSO.GetFile(coll) <br />&#039;oFileCopy.Copy&quot;e:\temp\zakaz&quot; <br />else<br />MsgBox &quot;Заказ принят &quot;+b<br />set oFileCopy=oFSO.GetFile(coll) <br />oFileCopy.Copy&quot;e:\temp\zakaz\1500\&quot; </p><p>End If&nbsp; <br />End Sub </p> <br /><p>set oFolder=Nothing <br />set oFile=Nothing <br />set oFileCopy=Nothing </p><p>set oFSO=Nothing</p>]]></content>
			<author>
				<name><![CDATA[panda4x4]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39963</uri>
			</author>
			<updated>2019-02-20T07:12:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132287#p132287</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132285#p132285" />
			<content type="html"><![CDATA[<p>Отвечаю сам себе.<br />Чтобы считать сумму заказа, достаточно пропустить первые 4 символа нужной строки<br />Осталось разобраться, почему не копируется файл - ошибка разрешение отклонено</p><p>&#039;************************************************************************************************ <br />&#039;Скрипт должен искать строку суммы заказа в файле, затем по сумме заказа копировать файл в нужную папку<br />&#039;*********************************************************************************************** </p><p>Option Explicit </p><p>dim oFSO, oFolder, oFolder1, oFile, oFileCopy <br />dim coll <br />dim a, b </p> <br /> <br /><p>set oFSO=CreateObject(&quot;Scripting.FileSystemObject&quot;) &#039;Создаем объектную модель FSO <br />set oFolder=oFSO.GetFolder(&quot;e:\temp\zakaz&quot;) &#039;Даем доступ к папке e:\temp\zakaz\ и создаем объект Folder </p> <br /><p>For Each a in oFolder.Files &#039;Наполняем массив а значениями из папки e:\temp\zakaz\ через свойство объекта Folder.Files <br />coll = a.Path &#039;Узнаем путь к каждому файлу из массива <br />set oFile = oFSO.OpenTextFile(coll, 1, 0)&nbsp; &nbsp;&#039;Открываем файл для чтения <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine<br />oFile.SkipLine<br />oFile.SkipLine<br />oFile.SkipLine <br />oFile.SkipLine<br />oFile.SkipLine <br />oFile.Skip 4&nbsp; &nbsp; &#039;пропускаем в строке 4 первых символа<br />b = oFile.Read (8) &#039;Считываем 10 строку и 7 символов стоки и просваиваем значение переменной b <br />Call MySub <br />oFile.Close &#039;Закрываем файл <br />Next </p><p>Sub MySub &#039;Процедура сортирует файлы в зависимости от содержания переменной b <br />If b&nbsp; &lt; 1500 then <br />MsgBox &quot;Сумма заказа слишком мала &quot;+b<br />&#039;set oFileCopy=oFSO.GetFile(coll) <br />&#039;oFileCopy.Copy&quot;e:\temp\zakaz&quot; <br />else<br />MsgBox &quot;Заказ принят &quot;+b</p><br /><p>End If&nbsp; <br />End Sub </p> <br /><p>set oFolder=Nothing <br />set oFile=Nothing <br />set oFileCopy=Nothing </p><p>set oFSO=Nothing</p>]]></content>
			<author>
				<name><![CDATA[panda4x4]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39963</uri>
			</author>
			<updated>2019-02-20T07:06:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132285#p132285</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS сортировка файлов по содержимому]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=132284#p132284" />
			<content type="html"><![CDATA[<p>Есть папка с файлами txt, в каждом файле есть строка вида<br />Sum=1742,00<br />Это сумма заказа. Строка иногда на 10й иногда на 9й строчке файла<br />Строка уникальна, больше в файле не повторяется.<br />Нужно заказы с суммой более 1500 копировать в другую папку.<br />Я нашел похожий скрипт и попытался переделать его под себя. <br />Что у меня не выходит<br />1. Как найти строчку по слову Sum? нужно перебирать все строки, пока первые 3 символа строки не совпадут? потом запомнить номер этой строки для дальнейших действий?<br />2. Как присвоить переменной b число после &quot;Sum=&quot; (сейчас я так понимаю ей присваивается текст)<br />3. В скрипте во время тестов я попытался копировать файл в папку e:\temp\zakaz\1500 - при запуске выдается ошибка что нужно разрешение.<br />Извиняюсь за глупые вопросы )<br />Вот скрипт.<br />&#039;************************************************************************************************ <br />&#039;Скрипт должен искать строку суммы заказа в файле, затем по сумме заказа копировать файл в нужную папку<br />&#039;*********************************************************************************************** </p><p>Option Explicit </p><p>dim oFSO, oFolder, oFolder1, oFile, oFileCopy <br />dim coll <br />dim a, b </p> <br /> <br /><p>set oFSO=CreateObject(&quot;Scripting.FileSystemObject&quot;) &#039;Создаем объектную модель FSO <br />set oFolder=oFSO.GetFolder(&quot;e:\temp\zakaz&quot;) &#039;Даем доступ к папке e:\temp\zakaz\ и создаем объект Folder <br />set oFolder1=oFSO.GetFolder(&quot;e:\temp\zakaz\1500&quot;) &#039;Даем доступ к папке e:\temp\zakaz\1500 и создаем объект Folder </p><p>For Each a in oFolder.Files &#039;Наполняем массив а значениями из папки e:\temp\zakaz\ через свойство объекта Folder.Files <br />coll = a.Path &#039;Узнаем путь к каждому файлу из массива <br />set oFile = oFSO.OpenTextFile(coll, 1, 0)&nbsp; &nbsp;&#039;Открываем файл для чтения <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.SkipLine <br />oFile.Skip 24 <br />b = oFile.Read (7) &#039;Считываем 10 строку и 7 символов стоки и просваиваем значение переменной b <br />Call MySub <br />oFile.Close &#039;Закрываем файл <br />Next </p><p>Sub MySub &#039;Процедура сортирует файлы в зависимости от содержания переменной b <br />If b&nbsp; &gt;&nbsp; 1500 then <br />set oFileCopy=oFSO.GetFile(coll) <br />oFileCopy.Copy&quot;e:\temp\zakaz\0&quot; </p><p>End If&nbsp; <br />End Sub </p><br /><p>set oFolder=Nothing <br />set oFile=Nothing <br />set oFileCopy=Nothing </p><p>set oFSO=Nothing<br />MsgBox &quot;Конец сортировки&quot;</p>]]></content>
			<author>
				<name><![CDATA[panda4x4]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39963</uri>
			</author>
			<updated>2019-02-20T05:19:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=132284#p132284</id>
		</entry>
</feed>
