Что нового

Отправить команду в CMD и получить ответ в переменную

Dotacka

Новичок
Сообщения
37
Репутация
0
Добрый день!
Возникла необходимость отправить команду в CMD с помощью autoit и получить ответ в переменную. Возможно ли? Есть ли у кого опыт?
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$s_Read = ''
$i_PID = Run(@ComSpec & ' /C  ipconfig', '', @SW_HIDE, 6)
While 1
	$s_Read &= StdoutRead($i_PID)
	If @error Then ExitLoop
	Sleep(1)
WEnd
MsgBox(32,'',$s_Read)
 
Автор
D

Dotacka

Новичок
Сообщения
37
Репутация
0
Код:
$s_Read = ''
$i_PID = Run(@ComSpec & ' /C  ipconfig', '', @SW_HIDE, 6)
While 1
    $s_Read &= StdoutRead($i_PID)
    If @error Then ExitLoop
    Sleep(1)
WEnd
MsgBox(32,'',$s_Read)

Добрый день! Спасибо. А что собственно это за код ? Я имел ввиду CMD - командную строку windows
x.jpg
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
В коде, собственно, и работает cmd в скрытом режиме
 
Автор
D

Dotacka

Новичок
Сообщения
37
Репутация
0
В коде, собственно, и работает cmd в скрытом режиме
Все разобрался- ipconfig это непосредственно команда.
А не подскажете почему у меня символы кодировки сбиты при выводе сообщения с результатом в msg box ?
viz.jpg
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
$s_Read = ''
$i_PID = Run(@ComSpec & ' /C  ipconfig', '', @SW_HIDE, 6)
While 1
    $s_Read &= StdoutRead($i_PID)
    If @error Then ExitLoop
    Sleep(1)
WEnd
$s_Read = _OEMToAnsi($s_Read)
ConsoleWrite($s_Read)
MsgBox(32, '', $s_Read)

Func _OEMToAnsi($sOEM)
    Local $a_AnsiFName = DllCall('user32.dll', 'Int', 'OemToChar', 'str', $sOEM, 'str', '')
    If @error = 0 Then
        Return $a_AnsiFName[2]
    Else
        Return $sOEM
    EndIf
EndFunc   ;==>_OEMToAnsi
 
Верх