8

How can I run a file with VisualBasicScript (.vbs)?

The file is 'file.bat' and it's located in the same dir as the .vbs.

2
  • @YourComputerHelpZ - you are a getting lot of great answers. Maybe you should explain what is your objective. Open the 'file.bat' and then do what? Display its contents in a message box, edit some text, run the batch file, etc? Commented Jun 5, 2009 at 15:26
  • 2
    By saying "open", do you mean "launch"/"execute"? Commented Jun 5, 2009 at 15:40

6 Answers 6

21

yes i want to run it.

Then try this:

CreateObject("WScript.Shell").Run "file.bat"
Sign up to request clarification or add additional context in comments.

Comments

0

See many examples on technet Script Center Script Repository.

A simple example is Select and Ping Computers Using a Text File:

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

2 Comments

hmmm.. can't really find easily what i'm looking for.
The first answer is the best
0

Use the FileSystemObject

Usage to open file:

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

4 Comments

see above, that will get you as file as opening a file, In this case it is being opened for reading, you can also specify for writing or appending.
Note ForWriting will overwrite any current contents.
My bad, you need to locally define the const ForReading, above edited. Please clarify, "I would like .bat"
Does it give you an exception? What exactly do you want to do with the file when you open it? Given that it is a bat file, do you actually want to "run" the batch file?
0
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

1 Comment

uhmmmm... i just want to open it, nothing else.
0

Even simplier This code works for all OS, I tried it in Windows 10 and it works so well: Try it by yourself :)

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

Comments

-3

Jamb Code:

jamb(run) "%PWD%\File.bat" & display box(small) with $OUTPUT

VBS Code:

set runFile (".\file.bat")
mode console
msgbox (runFile)

1 Comment

I am not sure this answers the question

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.