我正在尝试创建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命令,我无法使自动备份工作
答案 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