<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: Ожидание процесса]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=3754</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=3754&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: Ожидание процесса».]]></description>
		<lastBuildDate>Fri, 26 Nov 2010 12:18:16 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=42252#p42252</link>
			<description><![CDATA[<div class="quotebox"><cite>lawyerly пишет:</cite><blockquote><p>Option Explicit - ? Так как этот код встраивался в другой, у меня ругался на эту строчку. за комментировал, но остался вопрос дл ячего это используется?</p></blockquote></div><p><a href="http://forum.script-coding.com/viewtopic.php?pid=17187#p17187">Отсюда</a> и ниже. Крайне рекомендуется к применению.<br /></p><div class="quotebox"><cite>lawyerly пишет:</cite><blockquote><p>Enum WshExecStatus</p></blockquote></div><div class="codebox"><pre><code>&#039;Enum WshExecStatus</code></pre></div><p>Просто комментарий для констант ниже. Набор констант, перечисленных ниже, составляет перечисление «WshExecStatus».<br /></p><div class="quotebox"><cite>lawyerly пишет:</cite><blockquote><p>Почему надо объявлять переменные Dim -ом?</p></blockquote></div><p>См. выше про «Option Explicit».<br /></p><div class="quotebox"><cite>lawyerly пишет:</cite><blockquote><p>Этот кусок кода вообще не понял</p></blockquote></div><div class="codebox"><pre><code>If objWshExec.Status &lt;&gt; WshFailed Then &#039; Если статус задания не «неудачный запуск», то…
    strOut = &quot;&quot;
    strErr = &quot;&quot;
    
    Do Until objWshExec.Status = WshFinished &#039; Пока статус задания не равен «задание завершено»…
        strOut = strOut &amp; objWshExec.StdOut.ReadAll &#039; Добавляем в переменную strOut очередную порцию из выходного потока задания
        strErr = strErr &amp; objWshExec.StdErr.ReadAll &#039; Добавляем в переменную strErr очередную порцию из потока ошибок задания
        
        WScript.Sleep 100 &#039; Ждём
    Loop</code></pre></div><div class="quotebox"><cite>lawyerly пишет:</cite><blockquote><p>вот тут примерно понимаю, но если поясните буду признателен.</p></blockquote></div><p>Шаблон, по которому производится поиск. Скобками группируем то, что нужно будет впоследствии выбрать.<br />Метод «.Execute()» возвращает коллекцию Matches, которую перебираем по одному объекту в цикле. «.SubMatches()» — это то, что попало в скобки шаблона.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 26 Nov 2010 12:18:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=42252#p42252</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=42249#p42249</link>
			<description><![CDATA[<p>Спасибо большое. Немного подправил под себя и заработало <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Могли бы расписать код?<br />мне не понятны некоторые куски.</p><p>Option Explicit - ? Так как этот код встраивался в другой, у меня ругался на эту строчку. за комментировал, но остался вопрос дл ячего это используется?</p><p>Enum WshExecStatus - что это такое?</p><p>Почему надо объявлять переменные Dim -ом? Про Set я разобрался, а про дим и просто простое присваивание не понял <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p><div class="codebox"><pre><code>Do Until objWshExec.Status = WshFinished
        strOut = strOut &amp; objWshExec.StdOut.ReadAll
        strErr = strErr &amp; objWshExec.StdErr.ReadAll
        
        WScript.Sleep 100
    Loop</code></pre></div><p>этот кусок кода вообще не понял <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /> ни Do Unti ... Loop ни что присваивается переменным.</p><div class="codebox"><pre><code>For Each strLine In Split(strOut, vbCrLf)
        If InStr(strLine, strFile) Then
            With WScript.CreateObject(&quot;VBScript.RegExp&quot;)
                .IgnoreCase = True
                .Pattern = &quot;^.+ pid: (\d+) +(.+\\.+?) +.+$&quot;
                
                For Each objMatch In .Execute(strLine)
                    WScript.Echo &quot;PID: &quot;, objMatch.SubMatches(0)
                    WScript.Echo &quot;User:&quot;, objMatch.SubMatches(1)
                Next
                
            End With
        End If
Next</code></pre></div><p>For Each strLine In Split(strOut, vbCrLf) присваиваем переменной strLine каждую строку полученную из обращения к Handle, Split - разбирает массив на подстроки, где strOut - массив полученных данных, vbCrLf - маска как обрабатывать строки.<br />InStr - ищет совподения в тексте. strLine - где ищет , strFile - что ищет.<br /></p><div class="codebox"><pre><code>.IgnoreCase = True
.Pattern = &quot;^.+ pid: (\d+) +(.+\\.+?) +.+$&quot;</code></pre></div><p>вот тут примерно понимаю, но если поясните буду признателен.<br /></p><div class="codebox"><pre><code>                For Each objMatch In .Execute(strLine)
                    WScript.Echo &quot;PID: &quot;, objMatch.SubMatches(0)
                    WScript.Echo &quot;User:&quot;, objMatch.SubMatches(1)
                Next</code></pre></div><p>Понимаю что получаем, но не понимаю как <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (lawyerly)]]></author>
			<pubDate>Fri, 26 Nov 2010 10:45:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=42249#p42249</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=42203#p42203</link>
			<description><![CDATA[<p>Можно так:<br /></p><div class="codebox"><pre><code>Option Explicit

&#039; Enum WshExecStatus
Const WshRunning  = 0
Const WshFinished = 1
Const WshFailed   = 2


Dim objWshShell
Dim objWshExec

Dim objRegExp

Dim strFile

Dim strOut
Dim strErr
Dim strLine

Dim objMatch


strFile = &quot;C:\2222.doc&quot;
&#039;strFile = &quot;D:\copy\comp\1cv7.lck&quot;

Set objWshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)
Set objWshExec  = objWshShell.Exec(&quot;&quot;&quot;c:\Program Files\Handle\handle.exe&quot;&quot; -u &quot;&quot;&quot; &amp; strFile &amp; &quot;&quot;&quot;&quot;)

If objWshExec.Status &lt;&gt; WshFailed Then
    strOut = &quot;&quot;
    strErr = &quot;&quot;
    
    Do Until objWshExec.Status = WshFinished
        strOut = strOut &amp; objWshExec.StdOut.ReadAll
        strErr = strErr &amp; objWshExec.StdErr.ReadAll
        
        WScript.Sleep 100
    Loop
    
    For Each strLine In Split(strOut, vbCrLf)
        If InStr(strLine, strFile) Then
            With WScript.CreateObject(&quot;VBScript.RegExp&quot;)
                .IgnoreCase = True
                .Pattern = &quot;^.+ pid: (\d+) +(.+\\.+?) +.+$&quot;
                
                For Each objMatch In .Execute(strLine)
                    WScript.Echo &quot;PID: &quot;, objMatch.SubMatches(0)
                    WScript.Echo &quot;User:&quot;, objMatch.SubMatches(1)
                Next
                
            End With
        End If
    Next
End If

Set objWshExec  = Nothing
Set objWshShell = Nothing

WScript.Quit 0</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 24 Nov 2010 19:35:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=42203#p42203</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=42141#p42141</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>делается на WSH или на CMD/BAT?</p></blockquote></div><p>изначально на WSH.<br />Когда дохожу до удаления. Проверяет на наличие файла &quot;1Cv7.LCK&quot;. Если он есть, то запускаю батник с кодом:<br /></p><div class="codebox"><pre><code>D:\copy\handle.exe D:\copy\comp\1cv7.lck &gt; D:\copy\logs.txt</code></pre></div><p>Делаю паузу в скрипте 2000 и получаю текстовый файл:<br /></p><div class="codebox"><pre><code>Handle v3.42
Copyright (C) 1997-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

1cv7.exe           pid: 3728     18: D:\copy\comp\1Cv7.LCK</code></pre></div><p>Вот тут не могу найти как мне получить этот самый PID в переменную, что бы убить процесс. Поможите кто чем может.</p>]]></description>
			<author><![CDATA[null@example.com (lawyerly)]]></author>
			<pubDate>Wed, 24 Nov 2010 11:49:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=42141#p42141</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41988#p41988</link>
			<description><![CDATA[<p><strong>lawyerly</strong>, в WSH нет способа узнать, какой из процессов блокирует тот или иной файл. Если Вас устроит использование сторонних приложений, тогда возможно сие проделать. У Вас <br /></p><div class="quotebox"><blockquote><p>…удалить всю базу, залить новую и проиндексировать.</p></blockquote></div><p>делается на WSH или на CMD/BAT?</p><p>В любом случае, придётся пользовать внешние утилиты <em>[для случая удалённого открытия файлов по сети есть и встроенные варианты — с закрытием открытых файлов, но, естественно, без снятия удалённого процесса]</em>, например, <a href="http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx">Handle</a> или <a href="http://nirsoft.net/utils/opened_files_view.html">OpenedFilesView</a>, используя в том и в другом случае фильтр по <em>полному</em> имени файла «1Cv7.LCK». Если Вам достаточно только снять приложение — обойдётесь одной строкой, если ещё нужно предварительно сохранить имя пользователя, открывшего процесс 1С — немного сложнее.</p><p>Пробуйте.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Sat, 20 Nov 2010 06:20:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41988#p41988</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41965#p41965</link>
			<description><![CDATA[<p><strong>2DnsIs</strong><br />Этот процесс проходит ночью. над копией базы. так что работать в ней в это время просто ни кто не должен. Так что его надо принудительно хлоп, удалить всю базу, залить новую и проиндексировать.<br />Всё остальное реализовал, кроме этого.</p>]]></description>
			<author><![CDATA[null@example.com (lawyerly)]]></author>
			<pubDate>Fri, 19 Nov 2010 11:51:38 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41965#p41965</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41963#p41963</link>
			<description><![CDATA[<p><strong>2lawyerly</strong>, то есть кто то будет работать в базе, а вы его хоп, и отрубите?<br />Может копировать на живую? Например с помощью <a href="http://www.runtime.org/shadow-copy.htm">такой вот программы</a>, или лучше установите автоматические бэкапер, пусть он сам по расписанию работает.</p>]]></description>
			<author><![CDATA[null@example.com (DnsIs)]]></author>
			<pubDate>Fri, 19 Nov 2010 10:49:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41963#p41963</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41961#p41961</link>
			<description><![CDATA[<p>Добрый день.<br />облазил пол инета, по гуглил неудачно, в яндексе пошарился, пол форума поиском пролазил. Не знаю как правильно искать ответ на такой вот простенький вопрос.</p><p>Есть 1с 7.7. Есть необходимость обновлять каждый день копию. Но копию не всегда получается обновить, так как бывает что люди не выходят из базы. И блокируется файл &quot;1Cv7.LCK&quot;. Вот думал написать скрипт который узнает какой именно &quot;1cv7.exe&quot; его использует и запершить данный процесс. <br />Как завершить нужный процесс я уже изучил, по его PID. а вот узнать его пит из WBS я пока не научился. помогите пожалуйста разобраться с этим вопросом.</p>]]></description>
			<author><![CDATA[null@example.com (lawyerly)]]></author>
			<pubDate>Fri, 19 Nov 2010 10:36:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41961#p41961</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=29584#p29584</link>
			<description><![CDATA[<p><strong>lichy</strong>, на всякий случай, повторюсь, если я был недостаточно понятен:<br />1. Что это за приложение? Как называется, где про него можно прочитать?<br />2. Если Вы никак не хотите отвечать на первый вопрос: Process Monotor&#039;ом Вы сами должны отследить, что происходит при запуске инсталляции, а именно: какие процессы порождаются, как протекают, в какой последовательности и т.п. Потому что, такого, как Вы озвучили в <a href="http://forum.script-coding.com/viewtopic.php?pid=29421#p29421">#6</a>, быть не может. И я подозреваю, что Вы следите не за тем процессом.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Thu, 22 Oct 2009 04:58:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=29584#p29584</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=29583#p29583</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Проверяйте ProcessMonitor&#039;ом кто кого когда за кем запускает.</p><p><a href="http://www.itinvest.ru/software/pockettrade/1236/">Инструкция по инсталляции и работе с PocketTrade | Ай Ти Инвест</a>, ptsetup.exe — эта инсталляция?</p></blockquote></div><p>ptsetup = это инсталяция...</p><p>А при чем PocketTrade ?</p><p>И ProcessMonitor - не подходит, так как нужно все реализовать стандартными средствами Windows <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (lichy)]]></author>
			<pubDate>Thu, 22 Oct 2009 04:27:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=29583#p29583</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=29569#p29569</link>
			<description><![CDATA[<p>Проверяйте ProcessMonitor&#039;ом кто кого когда за кем запускает.</p><p><a href="http://www.itinvest.ru/software/pockettrade/1236/">Инструкция по инсталляции и работе с PocketTrade | Ай Ти Инвест</a>, ptsetup.exe — эта инсталляция?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 21 Oct 2009 13:09:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=29569#p29569</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=29566#p29566</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Не может. Давайте конкретику, что за процессы.</p><p>P.S. Один из них случайно не Консультант+?!</p></blockquote></div><p>Нет, не Консультант. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> его русифицировать не надо</p><p>1 процесс -- установка ... &quot;ptsetup.exe&quot; в диспетчере задач<br />&nbsp; &nbsp; &nbsp; &nbsp; Запуская через команду Run (.,0,True) через 5 минут примерно получаю результат о завершении процесса<br />&nbsp; &nbsp; &nbsp; &nbsp; Запуская с подхватыванием PID и дальнейшим отслеживанием события уничтожения процесса - те же 5 минут </p><p>2 После завершения установки я должен запустить процедуру копирования файлов из одной папки - в созданные в процессе установки. Это реализовано в .bat файле. Его запускаю с помощью Exec() </p><p>Но так как дождаться окончания установки не могу -- то копирование не возможно.</p>]]></description>
			<author><![CDATA[null@example.com (lichy)]]></author>
			<pubDate>Wed, 21 Oct 2009 12:53:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=29566#p29566</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=29547#p29547</link>
			<description><![CDATA[<p>Не может. Давайте конкретику, что за процессы.</p><p>P.S. Один из них случайно не Консультант+?!</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 21 Oct 2009 10:53:33 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=29547#p29547</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=29543#p29543</link>
			<description><![CDATA[<p>Все еще бьюсь над этой задачей....:/<br />Почему процесс может посылать сигнал о завершении. а при этом еще выполняться?</p>]]></description>
			<author><![CDATA[null@example.com (lichy)]]></author>
			<pubDate>Wed, 21 Oct 2009 09:46:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=29543#p29543</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=29421#p29421</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p><a href="http://www.script-coding.com/WSH/WshShell.html#3.4.">WshShell.Run</a><br /></p><div class="codebox"><pre><code>Option Explicit

Dim objWshShell

Set objWshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)

objWshShell.Run &quot;&quot;&quot;%systemroot%\notepad.exe&quot;&quot; &quot;&quot;c:\boot.ini&quot;&quot;&quot;, 1, True
objWshShell.Run &quot;&quot;&quot;%systemroot%\system32\ping.exe&quot;&quot; -t localhost&quot;, 1, True

Set objWshShell = Nothing

WScript.Quit 0</code></pre></div></blockquote></div><p>Спасибо, только это не решает проблему <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />Так же возвращает сигнал о завершении процесса, а в Диспетчере задач процесс отображается...<br />А второй процесс нельзя запускать, пока 1 не завершится</p>]]></description>
			<author><![CDATA[null@example.com (lichy)]]></author>
			<pubDate>Mon, 19 Oct 2009 05:47:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=29421#p29421</guid>
		</item>
	</channel>
</rss>
