MySQLDump来自Windows 7上的可执行文件

时间:2012-02-13 00:38:45

标签: windows git exec mysqldump wsh

我试图通过调用wsh jscript文件来转储mysql数据库,但它不起作用。

我有这个代码,用git shell调用,它运行得很完美:

# 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中尝试了几乎相同的代码,但它只返回转储文件的标头,并且不会创建文件。我不知道什么是错误的,或者如何调试代码...: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());

我也尝试使用bat文件和cmd文件,但是他们无法处理pathes中的空间。

有人可以帮忙吗?

(对我来说,以某种方式从git代码制作可执行文件就足够了,或者让wsh工作......完美的解决方案就是如果我可以从netbeans调用转储,但在生活中没有什么是理想的。 ..:D)

1 个答案:

答案 0 :(得分:1)

我用文件关联制作了它。

我创建了一个git.bat文件:

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

并将其与.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 add不能通过这些文件工作,我还没有找到一个自动转储和提交解决方案:git pre-commit + mysqldump: cannot find path, not existing command)*