2012-08-10 296 views
20

我只需要编写一个简单的批处理文件来运行一个vbscript。 vbscript和批处理文件都位于同一个文件夹中,并位于SysWOW64目录中,因为vbscript只能在该目录中执行。目前我的批处理文件如下:从批处理文件运行vbscript

@echo off 
%WINDIR%\SysWOW64\cmd.exe 
cscript necdaily.vbs 

但是,vbscript未执行,只是命令提示符处于打开状态。任何人都可以告诉我,当我运行这个批处理文件时,如何执行vbscript?谢谢。

回答

31

您可以使用%~dp0来获取当前正在运行的批处理文件的路径。

编辑以运行

之前将目录更改为VBS位置,如果你想在VBS同步在同一个窗口中运行,那么

@echo off 
pushd %~dp0 
cscript necdaily.vbs 

如果你想在VBS同步运行一个新窗口,然后

@echo off 
pushd %~dp0 
start /wait "" cmd /c cscript necdaily.vbs 

如果你想让VBS异步运行在同一个窗口中,那么

@echo off 
pushd %~dp0 
start /b "" cscript necdaily.vbs 

如果你想在VBS异步在新窗口中运行,那么

@echo off 
pushd %~dp0 
start "" cmd /c cscript necdaily.vbs 
+0

我尝试了所有的命令,但它仍然无法工作 – user918197 2012-08-14 06:48:14

+1

@ user918197 - ???他们为我工作。也许你的VBS仅在当前目录与VBS位置匹配时才有效。尝试对答案进行编辑。 – dbenham 2012-08-14 11:37:03

+0

它与32位或64位的东西有什么关系,因为我的VBScript不能运行在64位的Windows Server 2008 R2中,那就是将包含VBScript的整个文件夹复制到SysWOW64目录中,运行时,我键入命令,cscript necdaily.vbs但不在批处理文件中。 – user918197 2012-08-15 00:56:14

7

这是批处理文件的命令,它可以运行VBScript。

C:\Windows\SysWOW64\cmd.exe /c cscript C:\Windows\SysWOW64\...\necdaily.vbs 
1

好吧,我试图打开一个批处理文件中为.vbs,而无需点击打开,但这个问题的答案是...

SET APPDATA =%CD%

启动(你的文件没有在这里以.vbs括号,如果它是一个VBD文件)

希望帮助:)

5

批处理文件由行处理行,只要您拨打一个终止n可执行的直接。
- 要使批处理文件等待进程终止并继续,请在其前面放置call
- 要使批处理文件不经等待而继续,请在其前面放置start ""

我建议使用此单行脚本来实现自己的目标:

@call CSCRIPT “%〜dp0necdaily.vbs”

(因为这是单行线,您可以使用@而不是关闭@echo)

如果你认为你的脚本只能从CMD.EXE的Syswow64资料版本叫,你可以尝试:

@%WINDIR%\ SysWOW64 \ cmd.exe/c调用cscript“%〜dp0necdaily。VBS “与

如果您需要的窗口保持,您可以替换/ C/K

+0

对于第一个命令,可能并不需要['call'](https://ss64.com/nt/call.html)。没有它的脚本也会同步执行。通常'call'用于调用第二个*批处理*脚本而不混合执行上下文。所以,一个小小的'@ cscript'%〜dp0necdaily.vbs''完成了这项工作。 – 2017-04-17 22:38:51

1

就试试这个代码:

启动 ”“” C:\用户\ DiPesh \桌面\ VBScript中\ welcome.vbs”

,并保存为.bat和工作对我来说