我想用winexec 调用如下命令,但失败。估计是空格的问题C:\Program Files\Borland\Delphi6\Projects\动力公司 售气\mysqldump.exe -ukeke -pqjwTV.dvqPxyb2z2 -hlocalhost --default-character-set=GBK --compress --single-transaction -F dongli > C:\Program Files\Borland\Delphi6\Projects\动力公司 售气\backup\dongli2008-9-13 21:33:09.sql -a -b另外在运行里面应该怎么写?
shellexcute()
是通过windows外壳打开任意文件,非可执行文件自动通过关联的程序打开
对于可执行文件,区别不大,不过shellexcute可以指定运行时的工作路径winexec() 必须有GetMessage或超时之后才返回!CreateProcess和ShellExecute都是直接返回的!procedure TForm1.Button1Click(Sender: TObject);
var
h:pchar;
begin
h:='E:\代码\MY'+#32+'CODE\1.1\AQ.EXE'; //#32就是空格的值
winexec(PCHAR(H),SW_SHOWNORMAL);
end;end.
uwantrun:pchar;
begin
uwantrun:='C:\Program Files\Borland\Delphi6\Projects\动力公司 售气\mysqldump.exe -ukeke -pqjwTV.dvqPxyb2z2 -hlocalhost --default-character-set=GBK --compress --single-transaction -F dongli > C:\Program Files\Borland\Delphi6\Projects\动力公司 售气\backup\dongli2008-9-13 21:33:09.sql -a -b'
winexec(uwantrun,SW_SHOWNORMAL);
end; end.
extractfilepath(application.ExeName)---->'C:\Program Files\Borland\Delphi6\Projects\动力公司 售气\'
首先,第一个问题:有空格需要添加""双引号就可以。
第二个问题:重定向问题 :cmd.exe /cbegin
cmd1:='cmd.exe /C "'+extractfilepath(application.ExeName)+'mysqldump.exe"' ;
cmd2:=' -u'+databaseUser+ ' -p'+databasePassword+' -h'+databaseAddress +' --default-character-set=GBK --compress --single-transaction -F '+databaseName+' > "'+extractfilepath(application.ExeName)+'backup\'+databaseName+inttostr(DateTimeToFileDate(Now))+'.sql"';
ret:=WinExec(PChar ('cmd.exe /C '+cmd1+cmd2 ), SW_HIDE);end;