2012-05-22 86 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