Записать вывод консоли в файл - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь составить список настроек BIOS компьютера Lenovo с помощью VBScript и записать результат в файл.Я дошел до того, что могу записать материал в текстовый файл, однако он записывает только в первой настройке (записи).Как мне записать все настройки в один файл - один за другим?

On Error Resume Next
Dim colItems, fso

Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set f = fso.CreateTextFile("bios-settings" & ".txt", True)

strComputer = "LOCALHOST"
strOptions
Set objWMIService = GetObject("WinMgmts:" _
    &"{ImpersonationLevel=Impersonate}!\\" & strComputer & "\root\wmi")
Set colItems = objWMIService.ExecQuery("Select * from Lenovo_BiosSetting")

For Each objItem In colItems
    If Len(objItem.CurrentSetting) > 0 Then
        Setting = ObjItem.CurrentSetting
        StrItem = Left(ObjItem.CurrentSetting, InStr(ObjItem.CurrentSetting, ",") - 1)
        StrValue = Mid(ObjItem.CurrentSetting, InStr(ObjItem.CurrentSetting, ",") + 1, 256)

        Set selItems = objWMIService.ExecQuery("Select * from Lenovo_GetBiosSelections")
        For Each objItem2 In selItems
            objItem2.GetBiosSelections StrItem + ";", strOptions
        Next

        f.WriteLine StrItem
        f.WriteLine "  current setting  = " + StrValue
        f.WriteLine "  possible settings = " + strOptions
        f.WriteLine
    End If
    f.Close
Next

Это часть, где выполняется фактическая запись в файл:

f.WriteLine StrItem
f.WriteLine "  current setting  = " + StrValue
f.WriteLine "  possible settings = " + strOptions
f.WriteLine

Записьимя настройки BIOS (StrItem), текущее значение настройки (StrValue) и возможные значения настройки (strOptions).

1 Ответ

1 голос
/ 15 мая 2019

Первое, что вам нужно сделать, это удалить

on error resume next

из вашего скрипта. Это следует использовать только при определенных обстоятельствах для обработки ошибок, а не как способ срезать углы для ленивых разработчиков.

Если вы сделаете это, вы получите ошибку с жалобой на невозможность записи в закрытый файл.

Это приводит к фактической ошибке: вы закрываете файл после первой записи.

Переместить линию

f.Close

вне вашего для каждого цикла, и, вероятно, будет работать намного лучше.

...