例如,我一直在尝试从path启动myFileToRun.bat文件。
D:\My Folder\batchfiles\myFileToRun.bat
下面是我试图运行它的VBScript。
Dim WshShell, strCurrentDirectory Set WshShell = CreateObject("WScript.Shell") strCurrentDirectory = WshShell.CurrentDirectory WshShell.Run strCurrentDirectory & "\myFileToRun.bat" , 0 Set WshShell = Nothing
我不能够运行它,因为VBS是错误的说“系统找不到指定的文件”我已经尝试了其他类似的post在其他论坛中提到的各种方法。 他们大部分都说要加双引号。
注意:我已经尝试添加双引号,例如双引号
1.WshShell.Run """strCurrentDirectory & "\myFileToRun.bat" "", 0 2.WshShell.Run """"strCurrentDirectory & "\myFileToRun.bat"""", 0 3.WshShell.Run """"strCurrentDirectory & \myFileToRun.bat"""", 0
他们都没有工作,我想我是在错误的地方报价。 variablesstrCurrentDirectory更改为“strCurrentDirectory”而不是“D:\ My Folder \ batchfiles”,所以我的最终path将是“strCurrentDirectory”“\ myFileToRun.bat”,这是错误的。 我需要的path是“D:\我的文件夹\ batchfiles \ myFileToRun.bat”和文件来运行。
我还没有真正理解这些加引号的概念。 那么你能否向我解释一下这个概念,并帮助我解决这个错误。
编辑:我有解决scheme。 因为我不得不引用当前目录,所以我只是简化了脚本。
Dim WshShell Set WshShell = CreateObject("WScript.Shell") WshShell.Run "myFileToRun.bat", 0 Set WshShell = Nothing
谢谢大家的答案。 这是有帮助的。
尝试像这样:
Dim WshShell, strCurrentDirectory Set WshShell = CreateObject("WScript.Shell") strCurrentDirectory = WshShell.CurrentDirectory WshShell.Run """" & strCurrentDirectory & "\di r\myFileToRun.bat" & """" , 0 Set WshShell = Nothing
你只需要在字符串中正确地转义引号,规则就是每当你想在一个字符串中显示一个引号时,就把它加倍。
所以,这个命令
WshShell.Run strCurrentDirectory & "\myFileToRun.bat" , 0
此刻将通过为;
D:\My Folder\batchfiles\myFileToRun.bat
与大多数Windows程序一样,当传递路径时,需要用空格引用包含空格的路径,以确保完整路径得到识别,此时Run()
正在显示
D:\My
剩下的作为参数传递给My
程序。 由于系统将无法找到My
程序,这将导致
系统找不到指定的文件
错误。
为了解决这个问题,我们需要传递一个带引号的字符串(把我们想要包含的每个字面引号的引号加倍)
WshShell.Run """" & strCurrentDirectory & "\myFileToRun.bat""", 0
这将通过为;
"D:\My Folder\batchfiles\myFileToRun.bat"
注意:当与变量连接时,我们仍然需要正确打开和关闭字符串。 对于上面的情况,我们把字符串
""""
连接到一个变量上,这个变量只是""
但是用开始和结束引号来表示文字字符串。
也需要将变量正确连接到字符串,否则会得到奇怪的结果,例如您第一次尝试转义字符串
WshShell.Run """strCurrentDirectory & "\myFileToRun.bat" "", 0
会导致;
预期结束的声明
因为它不是正确结束的字符串。
你可以使用这个函数把双引号加到变量中:
Function DblQuote(Str) DblQuote = Chr(34) & Str & Chr(34) End Function
所以,代码变得容易阅读:
Dim WshShell, strCurrentDirectory Set WshShell = CreateObject("WScript.Shell") strCurrentDirectory = WshShell.CurrentDirectory wscript.echo DblQuote(strCurrentDirectory & "\My Folder\myFileToRun.bat") WshShell.Run DblQuote(strCurrentDirectory & "\My Folder\myFileToRun.bat"),0 Set WshShell = Nothing '******************************************************************** Function DblQuote(Str) DblQuote = Chr(34) & Str & Chr(34) End Function '********************************************************************