2012-12-01 102 views
0

在Windows cmd中,我使用<運算符來讀取文件中的命令輸入。替換爲「<」運算符

sqlite3 mydatabase.sqlite < command.txt 

sqlite3的是一個應用程序,並command.txt的內容是這樣的:

.backup '..\database_backup\2012-11-30-16-16-28.bak' 

每次,我產生一個新的command.txt文件(因爲我應該改變.bak文件名)和然後我使用<運算符將其提供給sqlite3.exe。有什麼辦法可以繞過command.txt生成並將所有輸入參數直接提供給sqlite3.exe?

回答

0

試試這個:

echo ".backup '..\database_backup\2012-11-30-16-16-28.bak'" | sqlite3 mydatabase.sqlite 

或本:

sqlite3 -cmd ".backup '..\database_backup\2012-11-30-16-16-28.bak'" mydatabase.sqlite < NUL 
+0

謝謝!有用。我有另一個問題。當我運行該命令時,即使我提供的sqlite.exe參數錯誤,我也總是得到0作爲返回碼。例如,如果我故意將數據庫的名稱更改爲mydatabase2.sqlite(不存在),我不會收到任何錯誤,並且返回碼仍然爲0!如果你給我一個提示,我將不勝感激。 – ManiAm

+1

如果你給它一個不存在的名字,sqlite3將會創建一個新的數據庫文件。你需要發出一個在這種情況下會失敗的SQL命令。例如:'sqlite3 mydatabase.sqlite「select * from someTableThatShouldExist where 0 = 1; .backup'backupfilename'」' –

1

documentation,我想嘗試:

echo .backup '..\database_backup\2012-11-30-16-16-28.bak' | sqlite3.exe mydatabase.sqlite 

這也可能工作:

sqlite3.exe mydatabase.sqlite ".backup '..\database_backup\2012-11-30-16-16-28.bak'"