繁体   English   中英

.vbs脚本将无法批处理运行/如何以静默方式运行批处理

[英].vbs script won't run batch / how to run batch silently

我有一个要静默运行的批处理文件。 所以,我一直在闲逛,拿出下面的代码... invMybatchfile.vbs

Dim curPath
curPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
Set WshShell = CreateObject("WScript.Shell")
cmds=WshShell.RUN(sCurPath & "\Mybatchfile.bat", 0, True)

该代码在我的桌面(Window 7 32bit)上可以运行,但是由于某些原因,该脚本在服务器计算机(Windows Server 2008 R2)上不起作用。 当我单击invMybatchfile.vbs时,dos窗口立即弹出并关闭,并且Mybatchfile.bat根本不执行。 (如果我只是在服务器计算机上运行Mybathfile.bat,它可以正常工作,因此批处理文件不是这里的问题。)

所以我的问题是,有人知道我为什么会遇到这个问题吗?

要么

还有其他方法可以不使用.vbs文件或安装其他软件而以静默方式启动批处理文件(这种方法没有最小化)?

感谢您的帮助JB

您的示例代码永远不会在任何计算机上运行,​​因为您将变量名称声明为“ curPath”,并将vlaue分配给“ CurPath”,但是您尝试将其与名称“ sCurPath”一起使用(而且该变量不会存在于您的代码中)。

另外,您不需要设置当前的工作目录,因为在启动文件时,shell会在工作目录中搜索文件,因此,这就是您需要的所有代码,仅需一行:

CreateObject("WScript.Shell").RUN "Mybatchfile.bat", 0, True

但是,如果出于任何奇怪的原因而有兴趣存储或使用当前工作目录,则可以使用一种返回当前目录的方法:

.CurrentDirectory

然后,您可以通过以下方式使用该方法:

Set Shell = CreateObject("WScript.Shell")
Shell.RUN Shell.CurrentDirectory & "\Mybatchfile.bat", 0, True

...或通过以下方式将当前目录存储在var中:

Set Shell  = CreateObject("WScript.Shell")
CurDir = Shell.CurrentDirectory & "\"
Shell.RUN CurDir & "Mybatchfile.bat", 0, True

MSDNhttp : //msdn.microsoft.com/en-us/library/3cc5edzd%28v=vs.84%29.aspx

编辑:

关于运行静默文件,您也可以使用NirCMD命令行应用程序来执行。

NirCMD exec hide "Path to Batch File\Batch File.bat"

官方网站http : //www.nirsoft.net/utils/nircmd2.html

我认为您需要通过cmd.exe运行它:

WshShell.Run("%COMSPEC% /c " & CurPath & "\Mybatchfile.bat", 0, True)

在此处此处检查类似的问题以获取更多信息。

您是否尝试过使用RunAs?

    cmds=WshShell.RUN("runas /noprofile /user:mymachine\administrator " _
    & sCurPath & "\Mybatchfile.bat", 0, True)

由于它可以在Windows 7上运行,但不能在Server 2008 R2上运行,所以这听起来像是我的权限问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM