簡體   English   中英

將批處理轉換為VBS腳本

[英]Convert batch to VBS script

我正在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"

或者,您可以只使用已有的並將“隱藏窗口”參數傳遞給“運行”命令(請參見下面的第二個參數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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM