2016-12-06 45 views
1

我在問你們如何運行.vbs中的.bat文件,而無需指定其包含的驅動器C:。我想嘗試進行某種安裝,然後我做了一個假裝載或安裝屏幕,以便.bat文件打開並從.vbs開始執行其小型動畫。關於這個問題是當我發送這個.vbs.bat它總是說發生了一個錯誤;這是我發現:從vbs運行.bat文件而無需指定其驅動器C:

CreateObject("WScript.Shell").Run("""C:\Users\Name\Desktop\Thingy.bat""") 

與該腳本的問題是,我把它的人也需要相同的名稱,我和C:。我該如何改變這個腳本,或者它不可能?

+0

如果它總是出現在桌面上,您可以使用'%USERPROFILE%'或與vbs中相同的代碼... – geisterfurz007

+2

將腳本路徑獲取到變量中。 'scriptPath = FSO.GetParentFolderName(wscript.ScriptFullName)' – Squashman

回答

0

下一頁評論代碼段應做的工作(大多數語句和命令逐項可理解的緣故):

option explicit 
On Error GoTo 0 

    ' declare variables 
Dim WshShell, sUserProfile, strCommand, fso 

    ' assign all object references to appropriate variables 
Set WshShell = WScript.CreateObject("WScript.Shell") 
Set fso  = CreateObject("Scripting.FileSystemObject") 

    ' get an environment variable's expanded value 
sUserProfile = WshShell.ExpandEnvironmentStrings("%UserProfile%") 

    ' build command to run 
strCommand = """" _ 
     & fso.BuildPath(fso.BuildPath(sUserProfile, "Desktop"), "Thingy.bat") & """" 

Wscript.Echo "(debug) command to run" & vbNewLine & strCommand 

WshShell.Run strCommand 
0

如果批處理文件始終在桌面上,你應該使用% USERPROFILE%像這樣:

CreateObject("WScript.Shell").Run(chr(34) & "%userprofile%\Desktop\Thingy.bat" & chr(34)) 

或者類似的東西,當批處理文件和VBScript文件都在同一個文件夾:

Set FSO = CreateObject("Scripting.FileSystemObject") 
scriptPath = FSO.GetParentFolderName(wscript.ScriptFullName) 
wscript.echo scriptPath 
MyBatchFile = chr(34) & scriptPath & "\Thingy.bat" & chr(34) 
wscript.echo MyBatchFile 
CreateObject("WScript.Shell").Run(MyBatchFile)