将批处理转换为VBS脚本

时间:2019-09-16 21:21:18

标签: windows cmd vbscript

我正在VBS脚本文件中远程运行此命令。我遇到的问题是,它会瞬间生成CMD窗口,并且分散了某些用户的注意力。如何在不生成CMD窗口的情况下运行此程序?最好是,我想以本机VBS语言获取WMI数据而不使用oShell.run?我宁愿不使用CMD。谢谢。

oShell.run "cmd /c wmic logicaldisk get name,providername,description,volumename,filesystem /format:list > c:\users\%username%\drives.txt"

2 个答案:

答案 0 :(得分:1)

或者您可以使用已有的并将“隐藏窗口”参数传递给“运行”命令(请参阅下面的第二个参数0):

Dim objShell : Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "cmd /c wmic logicaldisk get name,providername,description,volumename,filesystem /format:list > c:\users\%username%\drives.txt", 0, true
Set objShell = Nothing

答案 1 :(得分:0)

您可以尝试使用纯vbscript编写此代码:

Option Explicit
Dim Ws,ReportFile,strHomeFolder
Set Ws = CreateObject("WScript.Shell")
strHomeFolder = Ws.ExpandEnvironmentStrings("%USERPROFILE%")
ReportFile = strHomeFolder & "\drives.txt"
'MsgBox GetDrives_Information
Call WriteReport(GetDrives_Information,ReportFile)
'-------------------------------------------------------
Function GetDrives_Information()
Dim oFSO,report,objWMIService,objLogicalDisk
Set oFSO = CreateObject("Scripting.FileSystemObject")
Dim oDrives
Set oDrives = oFSO.Drives
Dim oDrive
Dim strLectType
on error resume next 
For Each oDrive in oDrives
        If oDrive.IsReady Then
                Select Case oDrive.DriveType
                        Case 0: strLectType = "Unknown"
                        Case 1: strLectType = "Amovible (USB)"
                        Case 2: strLectType = "Fixe (Hard Drive)"
                        Case 3: strLectType = "Network"
                        Case 4: strLectType = "CD-Rom"
                        Case 5: strLectType = "Virtuel"
                End Select
                report = report & "- Drive letter: " & oDrive.DriveLetter & vbCrLf
                report = report & "- serial number: " & oDrive.SerialNumber & vbCrLf
                report = report & "- Drive Type: " & oDrive.strLectType & vbCrLf
                If (oDrive.FileSystem <> "") Then
                        report = report & "- File system used : " & oDrive.FileSystem & vbCrLf
                End If

                Set objWMIService = GetObject("winmgmts:")
                Set objLogicalDisk = objWMIService.Get("Win32_LogicalDisk.DeviceID='" & oDrive.DriveLetter & ":'")
                report = report & "- There is " & objLogicalDisk.FreeSpace /1024\1024+1 & " Mo remaining space on this drive / disk" & vbCrLf
                report = report & "- There is " & objLogicalDisk.Size /1024\1024+1 & " Mo total space on this drive / disk" & vbCrLf

        End If
        report = report & vbCrLf
Next
GetDrives_Information = report
End Function
'-------------------------------------------------------
Sub WriteReport(strText,ReportFile)
    Dim fs,ts 
    Const ForWriting = 2
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set ts = fs.OpenTextFile(ReportFile,ForWriting,True)
    ts.WriteLine strText
    ts.Close
End Sub
'------------------------------------------------------
相关问题