Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Как получить данные в скрипт из командной строки? (http://forum.oszone.net/showthread.php?t=158381)

madmasles 27-11-2009 11:41 1281086

Как получить данные в скрипт из командной строки?
 
Подскажите, пожалуйста.
Я определяю какой USB модем подключен к компу так:
Цитата:

$mod=Run(@ComSpec&' /c devcon hwids USB\VID_0915*&pause', '', @SW_SHOW)
Выводится окно ком. строки, на котором есть все нужные мне данные. Но как их прочитать для дальнейшего использования? Перелопатил справку, вроде есть функция StdoutRead(), но она у меня ничего не читает. Я пробовал так:
Цитата:

$mod=Run(@ComSpec&' /c devcon hwids USB\VID_0915*&pause', '', @SW_SHOW)
$mode=StdoutRead($mod)
FileWrite("Log.txt", $mode&@LF)
Но так в файл Log.txt ничего не записывает. Что я неправильно делаю?

PS
"pause" и "@SW_SHOW" временно, чтобы видеть, что происходит.

Creat0R 27-11-2009 15:40 1281308

Цитата:

Цитата madmasles
Перелопатил справку, вроде есть функция StdoutRead(), но она у меня ничего не читает. »

А что в справке к этой функций написано? разве там нет примера использования?

Код:

#include <Constants.au3>

$iDevCon_PID = Run(@ComSpec & ' /c devcon hwids USB\VID_0915* & pause', '', @SW_SHOW, $STDERR_CHILD + $STDOUT_CHILD)

$sStdOutRead = ""
$sStdErrRead = ""

While 1
    $sStdOutRead &= StdoutRead($iDevCon_PID)
    If @error Then ExitLoop
WEnd

While 1
    $sStdErrRead &= StderrRead($iDevCon_PID)
    If @error Then ExitLoop
WEnd

MsgBox(64, 'StdoutRead', $sStdOutRead)
MsgBox(64, 'StderrRead', $sStdErrRead)

FileWriteLine("Log.txt", $sStdOutRead)


kaster 27-11-2009 15:50 1281322

madmasles,
а что требуется? просто записать в файл? тогда можно перенаправить поток на файл. типа так
Код:

Run(@ComSpec&' /c devcon hwids USB\VID_0915 > d:\1.txt') ; Тогда все содержимое консоли будет в файла d:\1.txt (правда могут быть глюки с кодировкой, если винда русская)
Если же, необходимо держать в памяти определенные параметры, для дальнейшего использования, то надо считать с консоли средствами AutoIt
Код:

#include <Constants.au3>
$mod=Run(@ComSpec&' /c devcon hwids USB\VID_0915', '', @SW_HIDE, $STDOUT_CHILD); Последний параметр определяет, что нужно мониторить STDOUT
While 1
    $line = StdoutRead($mod)
    If @error Then ExitLoop
Wend
FileWrite("Log.txt", $line & @CRLF)

тут основной акцент не на то, что получаем тоже самое - содержимое консоли в файле, а то, что правильно считываем саму консоль, а что делать дальше - на твое усмотрение. пиши файл, парси строку, передавай функции. вобщем, что хочешь :)


Время: 12:53.

Время: 12:53.
© OSzone.net 2001-