Vbscript 从UserProfile变量目录运行可执行文件

Vbscript 从UserProfile变量目录运行可执行文件,vbscript,Vbscript,我以为这是对的,但我没有。我正在尝试从用户配置文件目录调用一个可执行文件。变量未正确展开。以下是代码示例: userProfilePath = oShell.ExpandEnvironmentStrings("%UserProfile%") exePath = userProfilePath + "\test1.exe" Set WshShell = WScript.CreateObject(""WScript.Shell"") WshShell.Run """ & exePath &a

我以为这是对的,但我没有。我正在尝试从用户配置文件目录调用一个可执行文件。变量未正确展开。以下是代码示例:

userProfilePath = oShell.ExpandEnvironmentStrings("%UserProfile%")
exePath = userProfilePath + "\test1.exe"
Set WshShell = WScript.CreateObject(""WScript.Shell"")
WshShell.Run """ & exePath & """

当VBScript运行时,它不会正确显示的路径(“C:\Users\John Doe\test1.exe”)。关于如何正确使用变量和字符串,我缺少什么?

您的引用不正确
WScript.Shell
必须在一对双引号中,如果要在变量值前后添加双引号,则需要使用
Chr(34)

或4个双引号的序列:

WshShell.Run """" & exePath & """"
使用4个连续双引号的原因是VBScript字符串文字必须以双引号开始和结束,并且字符串文字中嵌套的双引号必须通过将它们加倍来转义(这样它们就不会过早终止字符串)。您的文本
“”“&exePath&“
定义的是文本
”&exePath&“
,而不是两个双QOUTE之间的变量
exePath
的值

话虽如此,在您的特定情况下,您不需要整个串联shebang,因为
Run
方法可以自己处理环境变量。以下代码应足以满足您的需要:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """%USERPROFILE%\test1.exe"""
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run """%USERPROFILE%\test1.exe"""