Что нового

Systeminfo и блокнот

Makrut

Новичок
Сообщения
44
Репутация
2
Здравствуйте. Через cmd ввожу команду systeminfo >> text.txt, чтобы собрать информацию о системе. Полученный файл необходимо открывать в блокноте, но проблема состоит в том, что через блокнот я имею такой конфиг:
...
Ќ §ў ­ЁҐ Ћ‘: Њ ©Єа®б®дв Windows 10 Pro
‚ҐабЁп Ћ‘: 10.0.10586 Ќ/„ Ї®бв஥­ЁҐ 10586
€§Ј®в®ўЁвҐ«м Ћ‘: Microsoft Corporation
Џ а ¬Ґвал Ћ‘: €§®«Ёа®ў ­­ п а Ў®з п бв ­жЁп
...

Прошу совета, можно ли исправить как-то кодировку.
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Makrut
исправить как-то кодировку
Код:
; сбор информации
RunWait(@ComSpec & " /c systeminfo >> info.txt", "", @SW_HIDE)

; конвертация файла
$info = FileRead("info.txt")
$aRet = DllCall("user32.dll", "bool", "OemToChar", "str", $info, "str", $info)
$file = FileOpen("info.txt", 2 + 512)
FileWrite($file, $aRet[2])
FileClose($file)
Если вы собираете информацию с нескольких компьютеров с добавлением в один файл, то конвертировать этот файл нужно только один раз в конце.

Вариант с чтением потока вывода
Код:
; сбор информации
$PID = Run(@ComSpec & " /c systeminfo", "", @SW_HIDE, 2)
ProcessWaitClose($PID)
$info = StdoutRead($PID)
; конвертация текста
$aRet = DllCall("user32.dll", "bool", "OemToChar", "str", $info, "str", $info)
; запись в файл
$file = FileOpen("info.txt", 2 + 512)
FileWrite($file, $aRet[2])
FileClose($file)
 
A

Alofa

Гость
OffTopic:
InnI
Хотел поинтересоваться:
Код:
; почему
ProcessWaitClose(Run(...))
; ...  вместо
RunWait(...)
; ... возможно какие-то, мне неизвестные, глюки бывают?
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
OffTopic:
Alofa
Потому что сначала я хотел сделать через StdoutRead(), потом передумал, а функции остались :smile:
А сейчас подумал - почему бы и нет?
Исправил на RunWait и добавил вариант с чтением потока вывода.
 
Верх