vbscript - 将控制台输出写入文件
问题描述
我正在尝试使用 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
)。
解决方案
您需要做的第一件事是删除
on error resume next
从你的脚本。这应该只在特定情况下用于进行错误处理,而不是为懒惰的开发人员偷工减料。
如果这样做,您将收到一条错误消息,抱怨无法写入已关闭的文件。
然后导致实际错误,您在第一次写入后关闭文件。
移动线
f.Close
在你的 for each 循环之外,它可能会工作得更好。
推荐阅读
- sql - 如何在 SQL Server 中创建一个逐渐递增的列?
- java - 检查向量类型
- batch-file - .bat 如果手动可以正常工作,但如果从 Windows 任务管理器触发
- javascript - 在while循环中的语句“a - 1”之后,变量“a”不会改变它的值
- python - 部分分解 Sympy 中的表达式
- ruby-on-rails - 如何正确通过管道输出“bundle exec rake ...”命令
- php - 检索 html 数据 POST 到 CRM 的记录 ID
- php - 在 open_basedir 上手动添加额外路径
- neo4j - Neo4J APOC apoc.import.csv 错误
- vb.net - Visual Basic 程序中的 DLL 结构混乱