<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: Ожидание процесса]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=3754&amp;type=atom" />
	<updated>2010-11-26T12:18:16Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=3754</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=42252#p42252" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-26T12:18:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=42252#p42252</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=42249#p42249" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[lawyerly]]></name>
			</author>
			<updated>2010-11-26T10:45:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=42249#p42249</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=42203#p42203" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-24T19:35:48Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=42203#p42203</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=42141#p42141" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[lawyerly]]></name>
			</author>
			<updated>2010-11-24T11:49:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=42141#p42141</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41988#p41988" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-20T06:20:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41988#p41988</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41965#p41965" />
			<content type="html"><![CDATA[<p><strong>2DnsIs</strong><br />Этот процесс проходит ночью. над копией базы. так что работать в ней в это время просто ни кто не должен. Так что его надо принудительно хлоп, удалить всю базу, залить новую и проиндексировать.<br />Всё остальное реализовал, кроме этого.</p>]]></content>
			<author>
				<name><![CDATA[lawyerly]]></name>
			</author>
			<updated>2010-11-19T11:51:38Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41965#p41965</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41963#p41963" />
			<content type="html"><![CDATA[<p><strong>2lawyerly</strong>, то есть кто то будет работать в базе, а вы его хоп, и отрубите?<br />Может копировать на живую? Например с помощью <a href="http://www.runtime.org/shadow-copy.htm">такой вот программы</a>, или лучше установите автоматические бэкапер, пусть он сам по расписанию работает.</p>]]></content>
			<author>
				<name><![CDATA[DnsIs]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26282</uri>
			</author>
			<updated>2010-11-19T10:49:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41963#p41963</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41961#p41961" />
			<content type="html"><![CDATA[<p>Добрый день.<br />облазил пол инета, по гуглил неудачно, в яндексе пошарился, пол форума поиском пролазил. Не знаю как правильно искать ответ на такой вот простенький вопрос.</p><p>Есть 1с 7.7. Есть необходимость обновлять каждый день копию. Но копию не всегда получается обновить, так как бывает что люди не выходят из базы. И блокируется файл &quot;1Cv7.LCK&quot;. Вот думал написать скрипт который узнает какой именно &quot;1cv7.exe&quot; его использует и запершить данный процесс. <br />Как завершить нужный процесс я уже изучил, по его PID. а вот узнать его пит из WBS я пока не научился. помогите пожалуйста разобраться с этим вопросом.</p>]]></content>
			<author>
				<name><![CDATA[lawyerly]]></name>
			</author>
			<updated>2010-11-19T10:36:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41961#p41961</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=29584#p29584" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-10-22T04:58:09Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=29584#p29584</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=29583#p29583" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[lichy]]></name>
			</author>
			<updated>2009-10-22T04:27:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=29583#p29583</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=29569#p29569" />
			<content type="html"><![CDATA[<p>Проверяйте ProcessMonitor&#039;ом кто кого когда за кем запускает.</p><p><a href="http://www.itinvest.ru/software/pockettrade/1236/">Инструкция по инсталляции и работе с PocketTrade | Ай Ти Инвест</a>, ptsetup.exe — эта инсталляция?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-10-21T13:09:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=29569#p29569</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=29566#p29566" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[lichy]]></name>
			</author>
			<updated>2009-10-21T12:53:43Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=29566#p29566</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=29547#p29547" />
			<content type="html"><![CDATA[<p>Не может. Давайте конкретику, что за процессы.</p><p>P.S. Один из них случайно не Консультант+?!</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2009-10-21T10:53:33Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=29547#p29547</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=29543#p29543" />
			<content type="html"><![CDATA[<p>Все еще бьюсь над этой задачей....:/<br />Почему процесс может посылать сигнал о завершении. а при этом еще выполняться?</p>]]></content>
			<author>
				<name><![CDATA[lichy]]></name>
			</author>
			<updated>2009-10-21T09:46:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=29543#p29543</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Ожидание процесса]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=29421#p29421" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[lichy]]></name>
			</author>
			<updated>2009-10-19T05:47:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=29421#p29421</id>
		</entry>
</feed>
