我正在尝试使用VBScript运行.bat文件。当在与.bat相同的文件夹中执行时,我可以让VBScript工作,但是,我不知道如何让它在文件夹外成功运行。
Dim shell
Set shell = CreateObject("WScript.Shell")
shell.Run "C:\Users\js\Desktop\createIndex\createindex.bat"发布于 2016-01-17 08:41:00
我怀疑批处理脚本需要自己的父文件夹作为工作目录。您可以通过将代码更改为以下代码来相应地设置工作目录:
Set shell = CreateObject("WScript.Shell")
shell.CurrentDirectory = "C:\Users\js\Desktop\createIndex"
shell.Run "createindex.bat"如果上述方法不起作用,您需要提供更多信息,说明应该发生什么以及实际发生了什么。在可见模式下运行外部命令/脚本,并且不自动关闭CMD通常有助于调试:
shell.CurrentDirectory = "C:\Users\js\Desktop\createIndex"
shell.Run "cmd /k createindex.bat", 1, True发布于 2017-04-09 06:34:00
我有4个简单的脚本为什么样的呼叫。
call.vbs
call_nowait.vbs
call_nowindow.vbs
call_nowindow_nowait.vbs
所有这4行代码都在开头:
ReDim args(WScript.Arguments.Count-1)
For i = 0 To WScript.Arguments.Count-1
If InStr(WScript.Arguments(i), " ") > 0 Then
args(i) = Chr(34) & WScript.Arguments(i) & Chr(34)
ElseIf WScript.Arguments(i) = "" Then
args(i) = Chr(34) & WScript.Arguments(i) & Chr(34)
Else
args(i) = WScript.Arguments(i)
End If
Next
Set objShell = WScript.CreateObject("WScript.Shell")
' MsgBox Join(args, " ")另外,最后一行在所有4个脚本中都是不同的:
call.vbs
objShell.Run Join(args, " "), 1, Truecall_nowait.vbs
objShell.Run Join(args, " "), 1, Falsecall_nowindow.vbs
objShell.Run Join(args, " "), 0, Truecall_nowindow_nowait.vbs
objShell.Run Join(args, " "), 0, False例如,call_nowindow.vbs脚本的整个命令行如下所示:
call_nowindow.vbs "C:\Users\js\Desktop\createIndex\createindex.bat"顺便说一下,您可以通过这些脚本运行任何东西,而不仅仅是批处理文件。这将创建一个不带窗口的notepad.exe实例:
call_nowindow.vbs notepad此命令将使用当前日期和时间创建cmd控制台,并使窗口保持打开状态:
call_nowait.vbs cmd /k echo.%DATE% %TIME%发布于 2018-04-02 22:16:03
使用此脚本将目录设置为脚本的当前工作目录。这样,每当脚本更改目录时,它都会在那里查找它,而不是将它硬根到特定的目录。
scriptdir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)这将使它在该目录中查找的任何文件对脚本可用。例如:如果文件在当前用户的桌面上。
C:\Users[Username]\desktop\myfile.vbs
将成为:
scriptdir\myfile.vbs
如果您将其移动到子文件夹“子文件夹”中,它将保持不变
scriptdir\myfile.vbs
即使脚本位置不同。"scriptdir“是运行活动脚本的文件夹的占位符。
https://stackoverflow.com/questions/34820685
复制相似问题