#cmd #lua #wmic
#cmd ( командный ) #lua #wmic #cmd
Вопрос:
Я использую команду cmd для получения информации о моей оперативной памяти с помощью сценария lua:
cmd = 'wmic MEMORYCHIP get BankLabel, Capacity, DeviceLocator, MemoryType, TypeDetail, Speed,Tag >'..path..'MyRAMDetail.txt'
os.execute(cmd)
Этот код сгенерирует file:MyRamDetail.txt на моем локальном диске. Он содержит текст примерно такого содержания при открытии через блокнот:
BankLabel Capacity DeviceLocator MemoryType Speed Tag TypeDetail
BANK 0 8589934592 ChannelA-DIMM0 0 1333 Physical Memory 0 128
Но когда я добавляю весь текст в заметку с помощью сценария Lua или печатаю его, он показывает:
??B
Я использую этот скрипт Lua для добавления строк в заметку:
local open = io.open
function read_file(fpath)
local file = open(fpath, "rb")
if not file then return nil end
local content = file:read "*a"
file:close()
return content
end
local path = 'C:\'
local fileContent = read_file(path..'MyRAMDetail.txt')
-- print (fileContent) check it
memo1.Lines.Text = fileContent
Как правильно распечатать содержимое файла или добавить весь текст к заметке?
С уважением
Комментарии:
1. wmic выводит по умолчанию в UTF16-ФАЙЛЕ со спецификацией, notepad обрабатывает это должным образом, ваш код — нет.
2. Спасибо за ответ #LotPings. Поскольку Lua обрабатывает строку как utf-8, мне нужно изменить кодовую страницу, используя chcp 65001, и после выполнения моего кода выше затем изменить кодовую страницу на значение по умолчанию (мое значение по умолчанию 850). Я сделал это с os.execute («chcp 65001»).