2012-02-13 2 views
0

Я попытался сбросить базу данных mysql с вызовом wsh jscript-файла, но это не сработает.MySQLDump из исполняемого файла в Windows 7

У меня есть этот код, называемый с мерзавцем оболочкой, и она прекрасно работает:

# 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 файлы тоже, но они не могут справиться пространство в трактах.

Может ли кто-нибудь помочь?

(Для меня было бы достаточно сделать какой-то исполняемый файл из 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"" 

И связано это с .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 дня я получил его! Woohoo! : D

примечание: * Командная строка Windows обычно имеет проблемы с пробелами и специальными символами в имени пути, поэтому гораздо проще использовать эмулированный Linux git, чем пытаться его исправить. Возможно также загрузить файл .hook в pre-commit git hook, чтобы он мог автоматически удалять схему базы данных каждым фиксатором ... (возможно, git add не работает с этими файлами, я не нашел авто дамп и принятие решения: git pre-commit + mysqldump: cannot find path, not existing command) *

Смежные вопросы