<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7316</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7316&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Как добыть информацию из окна cmd для последующего парсинга».]]></description>
		<lastBuildDate>Wed, 26 Feb 2014 22:12:35 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80394#p80394</link>
			<description><![CDATA[<p>Вот отличный вариант.<br /></p><div class="codebox"><pre><code>#NoTrayIcon
DllCall(&quot;AllocConsole&quot;)
WinHide % &quot;ahk_id &quot; DllCall(&quot;GetConsoleWindow&quot;, &quot;ptr&quot;)
loop
{
   objShell := ComObjCreate(&quot;WScript.Shell&quot;)
   objExec := objShell.Exec(ComSpec &quot; /C echo list volume | C:\Windows\System32\diskpart.exe&quot;)
   strStdOut := &quot;&quot;
   while, !objExec.StdOut.AtEndOfStream
      strStdOut := objExec.StdOut.ReadAll()
   Loop, Parse, strStdOut, `n, `r
   {
      If (instr(A_LoopField, &quot;Failed&quot;) || instr(A_LoopField, &quot;At Risk&quot;))
      {
         errors = 1
         StringMid, disk, A_LoopField, 16, 1
         break
      }
   }
   If errors = 1
   {
      Menu, Tray, Icon
      Gui,+AlwaysOnTop
      Gui, -MinimizeBox -MaximizeBox
      Gui, Font, s80, Times New Roman
      Gui, Add, Text,, Problema s Raid Disk: %disk%
      Gui, Show,, RaidError
      Gui, +LastFound
      OnMessage(0x112, &quot;WM_SYSCOMMAND&quot;)
      Return
   }
   sleep, 3600000
}

WM_SYSCOMMAND(wParam)
{
   if (A_Gui = 1 &amp;&amp; wParam = 0xF060) ; SC_CLOSE
      return 0
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 26 Feb 2014 22:12:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80394#p80394</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80388#p80388</link>
			<description><![CDATA[<p>Нарыл такой код.<br />Работает, но есть вопрос:<br />Как захватить&nbsp; хендл экрана консоли не ожидая 5 секунд (sleep 5000)?<br />То есть инфа вывелась - пошел захват.</p><div class="codebox"><pre><code>#NoTrayIcon
DetectHiddenWindows, on
loop
{
   Run, %comspec% /k echo list volume | diskpart.exe, , hide, pid
   sleep 5000

   ; AttachConsole accepts a process ID.
   if !DllCall(&quot;AttachConsole&quot;,&quot;uint&quot;,pid)
   {
      MsgBox AttachConsole failed - error %A_LastError%.
      ExitApp
   }

   ; If it succeeded, console functions now operate on the target console window.
   ; Use CreateFile to retrieve a handle to the active console screen buffer.
   hConOut := DllCall(&quot;CreateFile&quot;, &quot;str&quot;, &quot;CONOUT$&quot;, &quot;uint&quot;, 0xC0000000, &quot;uint&quot;, 7, &quot;PTR&quot;, 0, &quot;uint&quot;, 3, &quot;uint&quot;, 0, &quot;PTR&quot;, 0, &quot;PTR&quot;)
   if hConOut = -1 ; INVALID_HANDLE_VALUE
   {
      MsgBox CreateFile failed - error %A_LastError%.
      ExitApp
   }

   ; Allocate memory for a CONSOLE_SCREEN_BUFFER_INFO structure.
   VarSetCapacity(info, 24, 0)

   ; Get info about the active console screen buffer.
   if(!DllCall(&quot;GetConsoleScreenBufferInfo&quot;, &quot;PTR&quot;, hConOut, &quot;PTR&quot;, &amp;info))
   {
      MsgBox GetConsoleScreenBufferInfo failed - error %A_LastError%.
      ExitApp
   }

   ; Determine which section of the buffer is on display.
   ConWinLeft := NumGet(info, 10, &quot;Short&quot;)     ; info.srWindow.Left
   ConWinTop := NumGet(info, 12, &quot;Short&quot;)      ; info.srWindow.Top
   ConWinRight := NumGet(info, 14, &quot;Short&quot;)    ; info.srWindow.Right
   ConWinBottom := NumGet(info, 16, &quot;Short&quot;)   ; info.srWindow.Bottom
   ConWinWidth := ConWinRight-ConWinLeft+1
   ConWinHeight := ConWinBottom-ConWinTop+1
 
  ; Allocate memory to read into.
   VarSetCapacity(text, ConWinWidth*ConWinHeight*(A_IsUnicode ? 2 : 1), 0)

   ; Read text.
   if(!DllCall(&quot;ReadConsoleOutputCharacter&quot;, &quot;PTR&quot;, hConOut, &quot;str&quot;, text, &quot;uint&quot;, ConWinWidth*ConWinHeight, &quot;uint&quot;, 0, &quot;PTR*&quot;, numCharsRead, &quot;uint&quot;))
   {
      MsgBox ReadConsoleOutputCharacter failed - error %A_LastError%.
      ExitApp
   }

   ; Optional: insert line breaks every %ConWinWidth% characters.
   text := RegExReplace(text, &quot;`a).{&quot; ConWinWidth &quot;}(?=.)&quot;, &quot;$0`n&quot;)
   text := RegExReplace(text, &quot;^\s+|\s+$&quot;)

   DllCall(&quot;FreeConsole&quot;)
   WinClose, ahk_pid %pid%

   Loop, Parse, text, `n, `r
   {
      If (instr(A_LoopField, &quot;Failed&quot;) || instr(A_LoopField, &quot;At Risk&quot;))
      {
         errors = 1
         StringMid, disk, A_LoopField, 16, 1
         break
      }
   }
   If errors = 1
   {
      Menu, Tray, Icon
      Gui,+AlwaysOnTop
      Gui, -MinimizeBox -MaximizeBox
      Gui, Font, s80, Times New Roman
      Gui, Add, Text,, Problema s Raid Disk: %disk%
      Gui, Show,, RaidError
      Gui, +LastFound
      OnMessage(0x112, &quot;WM_SYSCOMMAND&quot;)
      Return
   }
   sleep, 3600000
}

WM_SYSCOMMAND(wParam)
{
   if (A_Gui = 1 &amp;&amp; wParam = 0xF060) ; SC_CLOSE
      return 0
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 26 Feb 2014 13:18:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80388#p80388</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80387#p80387</link>
			<description><![CDATA[<p>Подскажите, пожалуйста,<br /></p><div class="codebox"><pre><code>msgbox % StrGet(&amp;Buffer, 1000, &quot;UTF-16&quot;)</code></pre></div><p> избавляется от символов&nbsp; `n, `r<br />Поэтому непонятно, как ее дальше парсить.<br />Если же тупо скопировать в клипбоард с CMD, либо экспортировать в файл, то `n, `r остаются.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 26 Feb 2014 09:01:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80387#p80387</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79304#p79304</link>
			<description><![CDATA[<p>Если возвращаемое функцией значение вам не нужно, то и тип его указывать незачем.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 18 Jan 2014 13:22:17 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79304#p79304</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79301#p79301</link>
			<description><![CDATA[<p>О! Спасибо большое, YMP!<br />А правильней может будет так?<br /></p><div class="codebox"><pre><code> DllCall(&quot;FreeConsole&quot;, &quot;int&quot;)</code></pre></div><p>И в чем разница между ними?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 18 Jan 2014 11:47:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79301#p79301</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79299#p79299</link>
			<description><![CDATA[<p>Подключаемся к окну консоли указанного процесса, получаем хэндл выходного потока, который в данном случае будет также хэндлом активного экранного буфера консоли, и читаем текст из него.</p><p>Понял, чего не хватает в коде: в конце должно быть<br /></p><div class="codebox"><pre><code>DllCall(&quot;FreeConsole&quot;)</code></pre></div><p>Поскольку больше одной консоли подключать нельзя, то предыдущую нужно освобождать.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 18 Jan 2014 03:54:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79299#p79299</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79298#p79298</link>
			<description><![CDATA[<div class="codebox"><pre><code> bResult := DllCall(&quot;AttachConsole&quot;, &quot;uint&quot;, dwProcessId, &quot;int&quot;)

   ;hConsole := DllCall(&quot;CreateFileW&quot;, &quot;str&quot;, &quot;CONOUT$&quot;, &quot;uint&quot;, 0x80000000, &quot;uint&quot;, 1, &quot;ptr&quot;, 0, &quot;uint&quot;, 3, &quot;uint&quot;, 0x80, &quot;ptr&quot;, 0, &quot;ptr&quot;)
   hConsole := DllCall(&quot;GetStdHandle&quot;, &quot;uint&quot;, -11, &quot;ptr&quot;)

   bResult := DllCall(&quot;ReadConsoleOutputCharacter&quot;, &quot;ptr&quot;, hConsole, &quot;ptr&quot;, &amp;Buffer, &quot;uint&quot;, 100, &quot;ptr&quot;, 0, &quot;uint*&quot;, x, &quot;int&quot;)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 18 Jan 2014 03:23:15 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79298#p79298</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79297#p79297</link>
			<description><![CDATA[<div class="quotebox"><cite>teadrinker пишет:</cite><blockquote><p>Чаще всего понадобится префикс <em>cmd /c</em>.</p></blockquote></div><p>Вообще-то это не префикс, а запуск программы cmd.exe с передачей ей аргументов. Если нужно выполнить внутреннюю команду cmd вроде dir, ren, del и т.п., то нужно запускать cmd.exe. Но отдельные программы вроде chkdsk.exe запускаются сами по себе. Разве что их нужно между собой связать, чтобы одна обрабатывала вывод другой.</p><div class="quotebox"><cite>Malcev пишет:</cite><blockquote><p>Вероятно, это потому что я не понимаю алгоритм кода в первом сообщении.<br />Может вы сможете написать комментарии?</p></blockquote></div><p>Но там ведь есть комментарии. Какая именно часть кода не понятна?</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Sat, 18 Jan 2014 03:02:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79297#p79297</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79296#p79296</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Тут мне ход мысли не понятен.</p></blockquote></div><p>Вероятно, это потому что я не понимаю алгоритм кода в первом сообщении.<br />Может вы сможете написать комментарии?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Sat, 18 Jan 2014 00:27:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79296#p79296</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79294#p79294</link>
			<description><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>Запустите скрипт и введите что-нибудь в нижнее поле</p></blockquote></div><p>Чаще всего понадобится префикс <em>cmd /c</em>.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Fri, 17 Jan 2014 20:46:43 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79294#p79294</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79290#p79290</link>
			<description><![CDATA[<p>Могу только предположить, что ваш код пытается многократно подключать одну и ту же консоль, а это не положено.<br /></p><div class="quotebox"><blockquote><p>Ведь если при закрытии CMD, я открою новое у него не поменяется хендл?</p></blockquote></div><p>Тут мне ход мысли не понятен.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Fri, 17 Jan 2014 13:55:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79290#p79290</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79288#p79288</link>
			<description><![CDATA[<p>Спасибо! Это, как альтернатива - хорошо.<br />Но если таки вернуться к исходному коду.<br />Почему нельзя загрузить весь код в цикл?<br />Ведь если при закрытии CMD, я открою новое у него не поменяется хендл?</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 17 Jan 2014 13:29:49 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79288#p79288</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79284#p79284</link>
			<description><![CDATA[<p>При желании можно сделать вывод программы в контрол Edit. См. пример ниже. Запустите скрипт и введите что-нибудь в нижнее поле, например, ping localhost или т.п.<br /></p><div class="codebox"><pre><code>
Gui, Add, Edit, w480 h300 HWNDhwndOutput
Gui, Add, Edit, w480 r1 vCmdLine
Gui, Add, Button, Default w80 h20 gExec, Выполнить
GuiControl, Focus, CmdLine
Gui, Show
Return

Exec:
    GuiControlGet, CmdLine
    RunConAppToEdit(CmdLine, &quot;&quot;, hwndOutput)
Return

GuiClose:
    ExitApp

RunConAppToEdit(CmdLine, Input, hwndEdit)
{
    static BufSizeChar := 1024, hParent := 0
    static Show := 0, Flags := 0x101  ; STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW
    static Buf, BufSizeByte, ProcessInfo, StartupInfo, PipeAttribs
    static piSize, siSize, paSize, flOffset, shOffset, ihOffset
    static inOffset, outOffset, errOffset, thrOffset
    If (!hParent) {
        BufSizeByte := A_IsUnicode ? BufSizeChar * 2 : BufSizeChar
        If (A_PtrSize = 8) {
            piSize := 24, siSize := 104, paSize = 24
            flOffset := 60, shOffset := 64, ihOffset := 16
            inOffset := 80, outOffset := 88, errOffset := 96
            thrOffset := 8
        }
        Else {
            piSize := 16, siSize := 68, paSize = 12
            flOffset := 44, shOffset := 48, ihOffset := 8
            inOffset := 56, outOffset := 60, errOffset := 64
            thrOffset := 4
        }
        VarSetCapacity(Buf, BufSizeByte, 0),    VarSetCapacity(ProcessInfo, piSize, 0)
        VarSetCapacity(StartupInfo, siSize, 0), VarSetCapacity(PipeAttribs, paSize, 0)
        NumPut(siSize, StartupInfo, 0, &quot;uint&quot;), NumPut(Flags, StartupInfo, flOffset, &quot;uint&quot;)
        NumPut(Show, StartupInfo, shOffset, &quot;ushort&quot;)
        NumPut(paSize, PipeAttribs, 0, &quot;uint&quot;), NumPut(1, PipeAttribs, ihOffset, &quot;int&quot;)
        hParent := DllCall(&quot;GetCurrentProcess&quot;, &quot;ptr&quot;)
    }
    DllCall(&quot;CreatePipe&quot;, &quot;ptr *&quot;, hRead1_tmp, &quot;ptr *&quot;, hWrite2
                        , &quot;ptr&quot;, &amp;PipeAttribs, &quot;uint&quot;, 0)
    DllCall(&quot;CreatePipe&quot;, &quot;ptr *&quot;, hRead2, &quot;ptr *&quot;, hWrite1_tmp
                        , &quot;ptr&quot;, &amp;PipeAttribs, &quot;uint&quot;, 0)

    NumPut(hRead2,  StartupInfo, inOffset, &quot;ptr&quot;) 
    NumPut(hWrite2, StartupInfo, outOffset, &quot;ptr&quot;)
    NumPut(hWrite2, StartupInfo, errOffset, &quot;ptr&quot;)
    
    DllCall(&quot;DuplicateHandle&quot;, &quot;ptr&quot;, hParent, &quot;ptr&quot;, hRead1_tmp
                             , &quot;ptr&quot;, hParent, &quot;ptr *&quot;, hRead1
                             , &quot;uint&quot;, 0, &quot;uint&quot;, 0
                             , &quot;uint&quot;, 2)    ; DUPLICATE_SAME_ACCESS
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hRead1_tmp)
    DllCall(&quot;DuplicateHandle&quot;, &quot;ptr&quot;, hParent, &quot;ptr&quot;, hWrite1_tmp
                             , &quot;ptr&quot;, hParent, &quot;ptr *&quot;, hWrite1
                             , &quot;uint&quot;, 0, &quot;uint&quot;, 0
                             , &quot;uint&quot;, 2)
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hWrite1_tmp)
    
    DllCall(&quot;ExpandEnvironmentStrings&quot;, &quot;str&quot;, CmdLine, &quot;str&quot;, Buf, &quot;uint&quot;, BufSizeChar)
    CmdLine := Buf
    Ret := DllCall(&quot;CreateProcess&quot;, &quot;ptr&quot;, 0, &quot;str&quot;, CmdLine, &quot;ptr&quot;, 0, &quot;ptr&quot;, 0
                                  , &quot;uint&quot;, 1, &quot;uint&quot;, 0, &quot;ptr&quot;, 0, &quot;ptr&quot;, 0
                                  , &quot;ptr&quot;, &amp;StartupInfo, &quot;ptr&quot;, &amp;ProcessInfo)
    If (!Ret) {
        MsgBox,, %A_ThisFunc%, Не удалось создать процесс.
        Output := &quot;&quot;
        Return 1
    }
    hChild := NumGet(ProcessInfo, 0, &quot;ptr&quot;)
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, NumGet(ProcessInfo, thrOffset, &quot;ptr&quot;))
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hRead2)
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hWrite2)
    If (Input) {
        InLen := StrLen(Input) + 2
        VarSetCapacity(InBuf, InLen, 0)
        StrPut(Input . &quot;`r`n&quot;, &amp;InBuf, &quot;cp866&quot;)
        DllCall(&quot;WriteFile&quot;, &quot;ptr&quot;, hWrite1, &quot;ptr&quot;, &amp;InBuf, &quot;uint&quot;, InLen
                           , &quot;uint *&quot;, BytesWritten, &quot;uint&quot;, 0)
    }
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hWrite1)
    Output := &quot;&quot;
    Loop {
        If not DllCall(&quot;ReadFile&quot;, &quot;ptr&quot;, hRead1, &quot;ptr&quot;, &amp;Buf, &quot;uint&quot;, BufSizeByte
                                 , &quot;uint *&quot;, BytesRead, &quot;uint&quot;, 0)
            Break
        NumPut(0, Buf, BytesRead, &quot;Char&quot;)
        Output := StrGet(&amp;Buf, &quot;cp866&quot;) . &quot;`n&quot;
        SendMessage, 0xC2, False, &amp;Output,, ahk_id %hwndEdit%
    }
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hRead1)
    DllCall(&quot;GetExitCodeProcess&quot;, &quot;ptr&quot;, hChild, &quot;int *&quot;, ExitCode)
    DllCall(&quot;CloseHandle&quot;, &quot;ptr&quot;, hChild)
    Return ExitCode
}
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Fri, 17 Jan 2014 08:32:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79284#p79284</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79283#p79283</link>
			<description><![CDATA[<p>Но ведь запуск чекдиска вы не скриптом делаете? Он должен подключиться к существующему окну консоли, а затем в цикле из него читать. Подключение-то к окну не нужно в цикл ставить.</p>]]></description>
			<author><![CDATA[null@example.com (YMP)]]></author>
			<pubDate>Fri, 17 Jan 2014 07:50:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79283#p79283</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Как добыть информацию из окна cmd для последующего парсинга]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=79282#p79282</link>
			<description><![CDATA[<p>Задача такая, запускаем ссылку с определенным названием на батник, в котором запускается cmd и запускается chkdsk. Как только появляется надпись &quot;Windows has checked the file system&quot; закрываем cmd с определенным названием, так как их может быть несколько, запускаем снова этот батник и опять следим. Поэтому и цикл я взял всего скрипта.</p>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Fri, 17 Jan 2014 07:10:56 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=79282#p79282</guid>
		</item>
	</channel>
</rss>
