1. ホーム
  2. csv

[解決済み] VBS WScript.Echo 出力をテキストまたは cvs に書きたいのですが。

2022-02-16 12:21:10

質問

システムにインストールされたすべてのアプリケーションをテキストファイルまたはcsvにリストアップするVBScriptを作成しようとしています。すべてのソフトウェア(名前、バージョン、日付、サイズを含む)をリストアップする既存のコードを見つけることができました。現在、私が見つけたようにそれを実行すると、エコーはホストエコーのポップアップとして表示されます。各エコーをファイルに出力するために、vbsに何を追加する必要がありますか?私はこれが簡単であることを確信しているが、私は解決策を見つけることができないようです。

以下は、私が見つけたスクリプトです。

Dim fso
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
' List All Installed Software





Const HKLM = &H80000002 'HKEY_LOCAL_MACHINE
strComputer = "."
strKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
strEntry1a = "DisplayName"
strEntry1b = "QuietDisplayName"
strEntry2 = "InstallDate"
strEntry3 = "VersionMajor"
strEntry4 = "VersionMinor"
strEntry5 = "EstimatedSize"

Set objReg = GetObject("winmgmts://" & strComputer & _
 "/root/default:StdRegProv")
objReg.EnumKey HKLM, strKey, arrSubkeys
WScript.Echo "Installed Applications" & VbCrLf
For Each strSubkey In arrSubkeys
  intRet1 = objReg.GetStringValue(HKLM, strKey & strSubkey, _
   strEntry1a, strValue1)
  If intRet1 <> 0 Then
    objReg.GetStringValue HKLM, strKey & strSubkey, _
     strEntry1b, strValue1
  End If
  If strValue1 <> "" Then
    WScript.Echo VbCrLf & "Display Name: " & strValue1
  End If
  objReg.GetStringValue HKLM, strKey & strSubkey, _
   strEntry2, strValue2
  If strValue2 <> "" Then
    WScript.Echo "Install Date: " & strValue2
  End If
  objReg.GetDWORDValue HKLM, strKey & strSubkey, _
   strEntry3, intValue3
  objReg.GetDWORDValue HKLM, strKey & strSubkey, _
   strEntry4, intValue4
  If intValue3 <> "" Then
     WScript.Echo "Version: " & intValue3 & "." & intValue4
  End If
  objReg.GetDWORDValue HKLM, strKey & strSubkey, _
   strEntry5, intValue5
  If intValue5 <> "" Then
    WScript.Echo "Estimated Size: " & Round(intValue5/1024, 3) & " megabytes"
  End If
Next

解決方法は?

この場合、1つの方法として、スクリプトを cscript.exe を作成し、出力をファイルにリダイレクトします。

cscript.exe //NoLogo "C:\path\to\your.vbs" >"C:\output.txt"

スクリプトの実行方法に関係なく出力をファイルに書き出すように変更したい場合は、出力ファイルを開いたり閉じたりするコードを追加する必要があります。

Dim fso
Set fso = WScript.CreateObject("Scripting.Filesystemobject")
Set f = fso.OpenTextFile("C:\output.txt", 2)

...

f.Close
'End of Script

を置換し WScript.Echof.WriteLine .