VBS打开CMD但无法读取下一个命令以转到其他目录

时间:2016-12-08 04:40:30

标签: postgresql vbscript cmd

我正在尝试创建vbs文件,以便它由MS Scheduler执行以备份我的Postgresql数据库,因为我似乎找不到使用代理的方法,因为我安装它但它没有出现在我使用Odoo时安装的PGAdmin III的UI。我正在使用Windows 10。

这是我的.vbs文件

Set ShellCmd = WScript.CreateObject("WScript.Shell")

ShellCmd.run "cmd cd\ cd 'Program Files' cd Odoo 9.0-20161004 cd PostgreSQL cd bin pg_dump -h localhost -p 5432 -U openpg -f 'C:/BackupFiles/Sample.backup' -d 120120161800"

WScript.Echo "Success!"

当我运行它时,命令行不会去任何地方。即使只是“cmd cd”,cmd也什么都不做。这是一个非常简单的问题,但如果我无法运行简单的vbs命令,我无法使自动备份工作

2 个答案:

答案 0 :(得分:1)

您应该只使用.bat或.cmd批处理文件,而不是使用vbs脚本:

c:
cd "\Program Files\Odoo 9.0-20161004\PostgreSQL\bin"
pg_dump -h localhost -p 5432 -U openpg -f 'C:/BackupFiles/Sample.backup' -d 120120161800"

通常,我们不在vbs中使用ShellCmd.run "cmd ...."来在一个语句中执行多个命令。

答案 1 :(得分:0)

您的ShellCmd严重受损。我建议不要使用.Run采用.Exec方法来捕获输出 - 至少在问题解决之前。我不知道你的pg_dump是否需要在同一个文件夹中运行,如果不是这样可能会有效:

Dim WshShell, oExec, s
Set WshShell = CreateObject("WScript.Shell")

Program = """C:\Program Files\Odoo 9.0-20161004\PostgreSQL\bin\pg_dump"""
Options = " -h localhost -p 5432 -U openpg -f 'C:/BackupFiles/Sample.backup' -d 120120161800"

Set oExec = WshShell.Exec(Program & Options)

Do While Not oExec.StdOut.AtEndOfStream
    s = s & oExec.StdOut.ReadLine() & vbCrLf
Loop

WScript.Echo "oExec.Status=" & oExec.Status
Wscript.Echo s