【问题标题】:Convert batch to VBS script将批处理转换为 VBS 脚本
【发布时间】:2019-09-16 21:21:18
【问题描述】:

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

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

【问题讨论】:

标签: windows cmd vbscript


【解决方案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

【讨论】:

    【解决方案2】:

    您可以在纯 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
    '------------------------------------------------------
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多