2012-05-22 47 views
8

我想从应用程序启动psql.exe。用户查找脚本,因此它可能位于其磁盘上的任何位置,并且该应用程序只是将该脚本提供给psql。就是这样。将参数传递给psql.exe

这是什么正确的命令行?

我想这没有成功

"C:\Program Files\PostgreSQL\9.1\bin\psql.exe" TEST SYSADM -f "C:\Documents and Settings\Administrateur\Mes documents\TD6.0\FETCHING\install.sql" 

我用引号试过,不带引号,没有工作,它只是忽略的参数(尝试这样做的CMD.EXE)

C:\Documents and Settings\Administrateur>"C:\Program Files\PostgreSQL\9.1\bin\psql.exe" TEST SYSADM -f "C:\Documents and Settings\Administrateur\Mes documents\TD6.0\FETCHING\install. 
sql" 
psql: warning: extra command-line argument "-f" ignored 
psql: warning: extra command-line argument "C:\Documents and Settings\Administrateur\Mes documents\TD6.0\FETCHING\install.sql" ignored 
Password for user SYSADM: 

是,如果该脚本与psql.exe位于同一目录中,并且如果我首先将CD安装到psql.exe的安装位置,则表示没有引号,没有绝对路径并且工作正常。但是,就我而言,我希望应用程序可以在任何Windows安装中工作,这意味着psql.exe可以在任何地方,而且SQL脚本也可以在任何地方。我仍然希望将脚本提供给psql.exe。

+4

如果仔细观察'psql --help'的输出,您会注意到所有的“开关”参数需要在*数据库和用户名之前 –

回答

6

试试这个:下面

"C:\Program Files\PostgreSQL\9.1\bin\psql.exe" -f "C:\Documents and Settings\Administrateur\Mes documents\TD6.0\FETCHING\install.sql" TEST SYSADM 
0

保存命令作为批处理文件(INSTALL.BAT等)。

请注意'defaultValueHere'。您可以设置默认值,以防您的用户跳过该条目。

SET installScript=defaultValueHere 
SET /P server="Enter the install script location [%installScript%]: " 
ECHO you typed %installScript% 
PAUSE 
"C:\Program Files\PostgreSQL\9.1\bin\psql.exe" TEST SYSADM -f %installScript% 

指示用户从install.bat文件启动安装。有关将参数传递给SQL脚本的信息,请参阅my answer