我想通过使用ExecWait
在NSIS脚本中运行SQL文件。 我不希望密码对话框弹出,因此我将密码存储在PGPASSWORD
环境变量中(有关更多信息:link)。为ExecWait子进程设置环境变量
如果我直接在cmd中执行以下命令,它工作正常:
set PGPASSWORD=PasswordText&&psql -U postgres -w -f "Path\To\File.sql" db_name
然而,当我在NSIS脚本执行相同的命令,将PGPASSWORD
没有设置,它失败,因为不正确的密码:
ExecWait 'set PGPASSWORD=$PasswordText&&psql -U postgres -w -f "Path\To\File.sql" db_name'
其中PasswordText
是一个变量(VAR)其中I存储由用户给定的密码。
哈!它的工作原理,谢谢! (我认为它不适用于多个'ExecWait's,但是它确实)只是出于好奇,我做错了什么? –
不是100%肯定的,但可能是由'&&'链接的命令在从控制台手动调用子进程环境时以及在从“ExecWait”调用子进程环境时不起作用。 – Seki
如何检查运行期间PGPASSWORD的值?我试图nsExec :: ExecToStack ' “$ SYSDIR \ cmd.exe的” 回声%PGPASSWORD%' \t弹出$ 0 \t弹出$ 0 \t的MessageBox MB_OK $ 0,但是这并不工作。 –