从vbs运行.bat文件而不必指定其驱动器C:

时间:2016-12-06 14:32:56

标签: batch-file vbscript

我问你们如何从.bat运行.vbs文件,而不必指定其包含的驱动器C:。我想尝试进行某种安装,我做了一个假装载或安装屏幕,.bat文件打开并从.vbs执行迷你动画。这个问题是当我发送.vbs .bat时,它始终表示发生了错误;这就是我发现的:

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

此脚本的问题在于我发送给它的人还需要与我C:中的名称相同的名称。如何更改此脚本,还是不可能?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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)