2012-02-13 22 views
0

我試圖轉儲一個mysql數據庫調用一個wsh jscript文件,但它不起作用。從Windows 7上的可執行文件MySQLDump

我有這樣的代碼,調用git的外殼,和它完美的作品:

# If something fails, exit with status other than 0 
set -e 

# select dump directory 
cd "$(git rev-parse --show-toplevel)" 

# first, remove our original schema 
rm -f "WebShop\DataBase\backup.sql" 

# generate a new schema 
exec "C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqldump.exe" --skip-comments -u root --password=root webshopdb |sed 's$),($),\n($g' > "WebShop\DataBase\backup.sql" 

我幾乎嘗試了在WSH相同的代碼,但它僅與轉儲文件的文件頭返回,並沒有按」 t創建文件。我沒有什麼線索的工作錯了,還是怎麼調試代碼...:S

var shellObj = WScript.CreateObject('WScript.Shell'); 
var exec = shellObj.Exec(
    '"C:\\Program Files\\MySQL\\MySQL Server 5.5\\bin\\mysqldump.exe"'+ 
    " --skip-comments -u root --password=root webshopdb |sed 's$),($),\\n($g' > " + 
    '"D:\\creation\\software developer\\projects\\webshop-refactoring-project\\document root\\WebShop\\DataBase\\backup.sql"' 
); 
WScript.Echo(exec.StdOut.ReadAll()); 

我與蝙蝠文件和CMD文件嘗試過,但他們不能在pathes處理的空間。

任何人都可以幫忙嗎?

(對我來說,從git代碼製作一個可執行文件或者讓wsh工作就足夠了......完美的解決方案是,如果我可以從netbeans調用這個轉儲文件,但是在生活中沒有什麼是理想的...:D)

回答

1

我用文件關聯做了它。

我創建了一個git.bat文件:

if not exist %1 exit 
set bash=C:\Program Files (x86)\Git\bin\bash.exe 
"%bash%" --login -i -c "exec "%1"" 

和相關的IT到.hook文件。

之後,我創建了一個測試dump.hook文件:

#!/bin/sh 
cd "D:/creation/software developer/projects/webshop-refactoring-project/document root/WebShop"; 
cd "$(git rev-parse --show-toplevel)" 
rm -f "WebShop/DataBase/backup.sql" 
exec "C:/Program Files/MySQL/MySQL Server 5.5/bin/mysqldump.exe" --skip-comments -u root --password=root webshopdb |sed 's$),($),\n($g' > "WebShop/DataBase/backup.sql" 
exit 

而且它完美的作品。

3天后我明白了!哇噢! :D

注意:* Windows命令提示符通常在路徑名中有空白和特殊字符的問題,所以使用git的模擬linux比試圖解決它要容易得多。可以將.hook文件發送到預先提交的git鉤子,因此它可以通過每次提交自動轉儲數據庫模式......(也許git添加不能處理這些文件,我還沒有找到auto轉儲並提交解決方案:git pre-commit + mysqldump: cannot find path, not existing command)*

相關問題