首页 > 解决方案 > 将控制台输出写入文件

问题描述

我正在尝试使用 VBScript 列出联想计算机 BIOS 设置并将结果写入文件。我已经到了可以将内容写入文本文件的地步,但是它只写入第一个设置(记录)。如何将所有设置一一写入一个文件?

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)。

标签: vbscriptwmibios

解决方案


您需要做的第一件事是删除

on error resume next

从你的脚本。这应该只在特定情况下用于进行错误处理,而不是为懒惰的开发人员偷工减料。

如果这样做,您将收到一条错误消息,抱怨无法写入已关闭的文件。

然后导致实际错误,您在第一次写入后关闭文件。

移动线

f.Close

在你的 for each 循环之外,它可能会工作得更好。


推荐阅读