静默运行vbscript中的cmd

时间:2014-05-23 16:24:56

标签: windows batch-file vbscript cmd

我创建了以下runas.vbs脚本:

**************
Option explicit

Dim oShell, k

Const PASSWORD = "Pass123~"

set oShell= Wscript.CreateObject("WScript.Shell")

WScript.Sleep 500

oShell.run("RunAs /noprofile /user:%computername%\postgres " & Chr(34) & "cmd /c\" & 

Chr(34) & WScript.Arguments(0) & "\" & Chr(34) & Chr(34))

WScript.Sleep 1000

For k=1 To Len(PASSWORD)

  WScript.Sleep 200

  oShell.SendKeys Mid(PASSWORD,k,1)

Next

Wscript.Quit

**************

我在批处理文件中使用此vbscript来运行initdb.exe(Postgresql)。 用作:

cscript //Nologo //B runasNSPostgres.vbs ""%LG_PATH%\initdb.exe" --locale=C --encoding=UTF-8  -U %DBADMIN% -D "%DBDATA%""

执行此命令时,将打开另一个命令提示符屏幕,启动initdb处理。我不希望显示新的cmd提示屏幕。我希望initdb.exe在后台运行。

1 个答案:

答案 0 :(得分:0)

如果隐藏命令提示符窗口,则无法使用SendKeys向其发送密码键盘。

但是,您可以使用其他方法。尝试使用ECHO命令并将其输出传递给RunAs

oShell.Run "echo " & PASSWORD & " | runas /noprofile ...", 0

使用0作为第二个参数来阻止窗口出现。