首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想使用VBScript来运行不同文件夹中的.bat文件

问我想使用VBScript来运行不同文件夹中的.bat文件
EN

Stack Overflow用户
提问于 2016-01-16 06:07:10
回答 3查看 55.4K关注 0票数 10

我正在尝试使用VBScript运行.bat文件。当在与.bat相同的文件夹中执行时,我可以让VBScript工作,但是,我不知道如何让它在文件夹外成功运行。

代码语言:javascript
复制
Dim shell
Set shell = CreateObject("WScript.Shell")
shell.Run "C:\Users\js\Desktop\createIndex\createindex.bat"
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-17 08:41:00

我怀疑批处理脚本需要自己的父文件夹作为工作目录。您可以通过将代码更改为以下代码来相应地设置工作目录:

代码语言:javascript
复制
Set shell = CreateObject("WScript.Shell")
shell.CurrentDirectory = "C:\Users\js\Desktop\createIndex"
shell.Run "createindex.bat"

如果上述方法不起作用,您需要提供更多信息,说明应该发生什么以及实际发生了什么。在可见模式下运行外部命令/脚本,并且不自动关闭CMD通常有助于调试:

代码语言:javascript
复制
shell.CurrentDirectory = "C:\Users\js\Desktop\createIndex"
shell.Run "cmd /k createindex.bat", 1, True
票数 14
EN

Stack Overflow用户

发布于 2017-04-09 06:34:00

我有4个简单的脚本为什么样的呼叫。

call.vbs

call_nowait.vbs

call_nowindow.vbs

call_nowindow_nowait.vbs

所有这4行代码都在开头:

代码语言:javascript
复制
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

代码语言:javascript
复制
objShell.Run Join(args, " "), 1, True

call_nowait.vbs

代码语言:javascript
复制
objShell.Run Join(args, " "), 1, False

call_nowindow.vbs

代码语言:javascript
复制
objShell.Run Join(args, " "), 0, True

call_nowindow_nowait.vbs

代码语言:javascript
复制
objShell.Run Join(args, " "), 0, False

例如,call_nowindow.vbs脚本的整个命令行如下所示:

代码语言:javascript
复制
call_nowindow.vbs "C:\Users\js\Desktop\createIndex\createindex.bat"

顺便说一下,您可以通过这些脚本运行任何东西,而不仅仅是批处理文件。这将创建一个不带窗口的notepad.exe实例:

代码语言:javascript
复制
call_nowindow.vbs notepad

此命令将使用当前日期和时间创建cmd控制台,并使窗口保持打开状态:

代码语言:javascript
复制
call_nowait.vbs cmd /k echo.%DATE% %TIME%
票数 0
EN

Stack Overflow用户

发布于 2018-04-02 22:16:03

使用此脚本将目录设置为脚本的当前工作目录。这样,每当脚本更改目录时,它都会在那里查找它,而不是将它硬根到特定的目录。

代码语言:javascript
复制
 scriptdir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)

这将使它在该目录中查找的任何文件对脚本可用。例如:如果文件在当前用户的桌面上。

C:\Users[Username]\desktop\myfile.vbs

将成为:

scriptdir\myfile.vbs

如果您将其移动到子文件夹“子文件夹”中,它将保持不变

scriptdir\myfile.vbs

即使脚本位置不同。"scriptdir“是运行活动脚本的文件夹的占位符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34820685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档