<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS сортировка файлов по содержимому]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=14587</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14587&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS сортировка файлов по содержимому».]]></description>
		<lastBuildDate>Sun, 10 Mar 2019 22:21:24 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132883#p132883</link>
			<description><![CDATA[<p><strong>alexii</strong>, почему ? Я в своём примере выше сделал отбор по <strong>^sum\s*=\s*([0-9,.\s]+)$</strong>. Так как я далеко не знаток регулярок, возможно это неверно, но дальше значение проверяю на <strong>IsNumeric</strong> для удобства. А вот результат IsNumeric будет уже зависеть от региональных настроек, как я понял. Но автор об этом не спросил и я решил оставить решение этого вопроса на его усмотрение.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Sun, 10 Mar 2019 22:21:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132883#p132883</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132878#p132878</link>
			<description><![CDATA[<p><strong>Xameleon</strong>, тогда хрен мы регуляркой выцепим из текста эту сумму <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" />. Не?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sun, 10 Mar 2019 19:12:29 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132878#p132878</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132764#p132764</link>
			<description><![CDATA[<p><strong>alexii</strong>, думаю в случае если сумма, например, с дробной частью, а разделитель целой и дробной части в системных настройках указан не такой как в строке.</p><p>Пример - в файле строка &quot;Sum=1500<strong>.</strong>55&quot;, а в системных настройках стоит разделитель &quot;,&quot;. Тогда CCur(&quot;1500.55&quot;) вернёт ошибку.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Sun, 03 Mar 2019 22:39:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132764#p132764</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132762#p132762</link>
			<description><![CDATA[<p><strong>NovaRo</strong>, а где тут место исключениям для срабатывания? Я не особо вижу.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sun, 03 Mar 2019 22:19:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132762#p132762</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132730#p132730</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (NovaRo)]]></author>
			<pubDate>Sun, 03 Mar 2019 13:54:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132730#p132730</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132316#p132316</link>
			<description><![CDATA[<p>Я бы наверное так сделал.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Thu, 21 Feb 2019 10:14:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132316#p132316</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132306#p132306</link>
			<description><![CDATA[<p>«Неправильно ты, Дядя Фёдор, бутерброд ешь <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> (зачеркнуть) ищешь».</p><p><strong>panda4x4</strong>, Вам следует прочитать <em>всё</em> содержимое файла в переменную, затем воспользоваться регулярным выражением для поиска и получения суммы заказа, которую потом Вы будете сравнивать с искомым ограничением.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 20 Feb 2019 14:39:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132306#p132306</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132287#p132287</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (panda4x4)]]></author>
			<pubDate>Wed, 20 Feb 2019 07:12:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132287#p132287</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS сортировка файлов по содержимому]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132285#p132285</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (panda4x4)]]></author>
			<pubDate>Wed, 20 Feb 2019 07:06:55 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132285#p132285</guid>
		</item>
		<item>
			<title><![CDATA[VBS сортировка файлов по содержимому]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=132284#p132284</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (panda4x4)]]></author>
			<pubDate>Wed, 20 Feb 2019 05:19:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=132284#p132284</guid>
		</item>
	</channel>
</rss>
