我有一个我想静默运行的批处理文件。 所以,我正在四处寻找并提出以下代码...... 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,它运行正常,所以批处理文件不是问题。)
所以我的问题是,有谁知道我为什么遇到这个问题?
OR
有没有其他方法可以静默启动批处理文件(不是最小化,我知道这种方式),而不使用.vbs文件或安装其他软件?
感谢您的帮助 JB
答案 0 :(得分:1)
您的示例的代码永远不会在任何计算机上运行,因为您将变量名称声明为“curPath”并将该值分配给“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
MSDN :http://msdn.microsoft.com/en-us/library/3cc5edzd%28v=vs.84%29.aspx
修改强>
关于运行静音文件,您也可以使用 NirCMD 命令行应用程序来执行此操作。
NirCMD exec hide "Path to Batch File\Batch File.bat"
答案 1 :(得分:0)
我认为您需要通过cmd.exe运行它:
WshShell.Run("%COMSPEC% /c " & CurPath & "\Mybatchfile.bat", 0, True)
答案 2 :(得分:-1)
您是否尝试过使用RunAs?
cmds=WshShell.RUN("runas /noprofile /user:mymachine\administrator " _
& sCurPath & "\Mybatchfile.bat", 0, True)
由于它适用于Windows 7但不适用于Server 2008 R2,因此对我来说这听起来像是权限问题。