web-dev-qa-db-ja.com

VisualBasicScript(.vbs)を使用してファイルを実行する方法

VisualBasicScript(.vbs)でファイルを実行するにはどうすればよいですか?

ファイルは「file.bat」で、.vbsと同じディレクトリにあります。

7
Deniz Zoeteman

はい、実行したいです。

次に、これを試してください:

CreateObject("WScript.Shell").Run "file.bat"
18
Helen
function getFileInfo(filePath)
    dim fso, fileObj, outMsg
    set fso = createobject("Scripting.FileSystemObject")
    set fileObj = fso.getfile(filePath)
    outMsg = ""
    outMsg = outMsg & " Created: " & fileObj.DateCreated & vbcrlf
    outMsg = outMsg & " Last Accessed: " & fileObj.DateLastAccessed & vbcrlf
    outMsg = outMsg & " Last Modified: " & fileObj.DateLastModified & vbcrlf
    outMsg = outMsg & " File Type: " & fileObj.Type & vbcrlf
    if fileObj.attributes and 0 then
        outMsg = outMsg & " File Attributes: Normal File"
    else
        outMsg = outMsg & " File Attributes: "
        if fileObj.attributes and 1 then
            outMsg = outMsg & "Read Only "
        end if
        if fileObj.attributes and 2 then
            outMsg= outMsg & "Hidden "
        end if
        if fileObj.attributes and 4 then
            outMsg= outMsg & "System "
        end if
        if fileObj.attributes and 8 then
            outMsg= outMsg & "Volume "
        end if
        if fileObj.attributes and 16 then
            outMsg= outMsg & "Directory "
        end if
        if fileObj.attributes and 32 then
            outMsg= outMsg & "Archive "
        end if
        if fileObj.attributes and 1024 then
            outMsg= outMsg & "Link "
        end if
        if fileObj.attributes and 2048 then
            outMsg= outMsg & "Compressed "
        end if
    end if
    set fileObj = nothing
    set fso = nothing
    getFileInfo = outMsg
end function
0
ChickenMilkBomb

さらに単純なこのコードはすべてのOSで機能します。私は、Windows 10で試してみましたが、非常にうまく機能します。自分で試してみてください:)

Function BrowseForFile()
  BrowseForFile = CreateObject("WScript.Shell").Exec( _
  "mshta.exe ""about:<input type=file id=f>" & _
  "<script>resizeTo(0,0);f.click();new ActiveXObject('Scripting.FileSystemObject')" & _
  ".GetStandardStream(1).WriteLine(f.value);close();</script>""" _
  ).StdOut.ReadLine()
End Function
0
Alex Casal

Technetの多くの例を参照してください スクリプトセンタースクリプトリポジトリ

簡単な例は テキストファイルを使用してコンピューターを選択してpingする

On Error Resume Next

Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("c:\scripts\servers.txt", ForReading)

strComputers = objTextFile.ReadAll
objTextFile.Close

arrComputers = Split(strComputers, vbCrLf)
Set objShell = CreateObject("WScript.Shell")

For Each strComputer In arrComputers

    strCommand = "%comspec% /c ping -n 3 -w 1000 " & strComputer
    Set objExecObject = objShell.Exec(strCommand)
    strText = objExecObject.StdOut.ReadAll
    If Instr(strText, "Reply") > 0 Then

    ' =====================================================================
    ' Insert your code here
    ' =====================================================================

        Set objWMIService = GetObject _
            ("winmgmts:\\" & strComputer & "\root\cimv2")
        Set colItems = objWMIService.ExecQuery _
            ("Select * From Win32_OperatingSystem")
        For Each objItem In ColItems
            Wscript.Echo strComputer & ": " & objItem.Caption
        Next


    Else
        Wscript.Echo strComputer & " could not be reached."
    End If

Next
0
gimel

FileSystemObject を使用します

ファイルを開くための使用法:

Const ForReading = 1
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(".\File.bat", ForReading)
0
cmsjr