我正在尝试使用 ShellExecute 运行 mysqldump 从 delphi 备份我的 mysql 数据库。 这就是我使用 mysqldump 的方式:
MySqlDump.exe -u root -p[password] [databasename] > TheOutputFile.Sql
这可以在命令提示符下运行。
我使用 ShellExecute 调用此命令行:
ShellExecute(
0,
nil,
'cmd.exe',
'C:\SmartRetail\Test System\Periodic database backup\MySqlDump.exe -u root -p123 smartretailprogramdata > TheOutputFile2.Sql',
nil,
SW_SHOW
);
这不起作用,而是打开命令提示符。 我做错了什么?
最佳答案
它会打开命令解释器,因为这就是cmd.exe
。您需要指定 /C
来告诉 cmd 进程在解释完您的命令后关闭。
最重要的是,您需要管理工作目录。除非 .sql 文件位于工作目录中,否则转储进程将找不到它。并且工作目录是从父进程继承的,因为您没有指定它。您可能需要指定工作目录。
最后,ShellExecute
确实是错误的解决方案。您仅使用它来获取标准输出重定向。但这确实应该明确地完成。请改用CreateProcess
。
关于delphi - 通过 ShellExecute 的 Mysqldump 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439996/