2016-12-06 5 views
1

.batファイルを.vbsから実行する方法を、そのドライブを指定することなくC:に指定する必要があります。私は何らかのインストールを試みたいと思うし、.batファイルが開き、そのミニアニメーションを.vbsから行う偽の読み込みまたはインストール画面を行った。これに関する問題は、.vbs.batをつけて送信するとエラーが発生したということです。これは私が見つけたものです:このスクリプトでドライブを指定せずにvbsから.batファイルを実行します。

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) 
関連する問題