2012-02-13 10 views
0

wsh jscript 파일을 호출하여 mysql 데이터베이스를 덤프하려했지만 작동하지 않습니다.Windows 7에서 MySQLDump 실행 가능

나는 자식 쉘 호출이 코드를 가지고, 그것은 완벽하게 작동합니다 : '

# 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에 공간을 처리 할 수 ​​없습니다 : 나는 ... 어떻게 코드를 디버깅하는 잘못된 작업, 또는 어떤 단서를 가지고 있지 않습니다.

아무도 도와 줄 수 있습니까?

(나를 위해 그것은 어떻게 든 자식 코드에서 실행 파일을 만들거나 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 일 후에 나는 그것을 얻었다! 우! : D

참고 : * Windows 명령 프롬프트는 일반적으로 경로 이름에 공백과 특수 문자에 문제가 있으므로 git의 에뮬레이트 된 Linux를 사용하는 것이 훨씬 쉽습니다. .hook 파일을 pre-commit git 훅으로도 소스화할 수 있기 때문에 모든 커밋에 따라 자동으로 데이터베이스 스키마를 덤프 할 수 있습니다. (아마도 git이 그 파일들에 의해 작동하지 않고, 자동을 찾지 못했을 것입니다 아직 덤프 및 커밋 솔루션 : git pre-commit + mysqldump: cannot find path, not existing command) *