2012-02-13 35 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)*

相关问题