使用 Windows“ShellExecute”将数据通过管道传输到文件功能
我在 windows vista 中使用“ShellExecute”函数
有什么方法可以将输出通过管道传送到文件吗?
即
MySqlDump.exe'-u user1 -ppassword dbName> TheOutputFile.Sql
这是我的代码
theProgram := 'MySqlDump.exe';
itsParameters := '-u user1 -ppassword dbName';
rslt := ShellExecute(0, 'open',
pChar (theProgram),
pChar (itsParameters),
nil,
SW_SHOW);
编辑:
我已经尝试过
itsParameters := '-u user1 -ppassword dbName > TheOutputFile.Sql';
,但这不起作用
I am using the ‘ShellExecute’ function in windows vista
Is there any way to pipe the output to a file?
i.e.
MySqlDump.exe '-u user1 -ppassword dbName > TheOutputFile.Sql
Here my code
theProgram := 'MySqlDump.exe';
itsParameters := '-u user1 -ppassword dbName';
rslt := ShellExecute(0, 'open',
pChar (theProgram),
pChar (itsParameters),
nil,
SW_SHOW);
EDIT:
I have tried
itsParameters := '-u user1 -ppassword dbName > TheOutputFile.Sql';
but this does not work
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
@Charles,您可以使用重定向器符号“>”在 ShellExecute 中,但使用 Windows 命令解释器 cmd.exe。
尝试这个示例
另一个选项是使用管道,您可以在此链接中找到一个非常好的示例。
@Charles, you can use the redirector simbol ">" in a ShellExecute, but using the cmd.exe which is the Windows command interpreter.
try this sample
Another options is use pipes, you can find a very nice example in this link.
在这种情况下,最简单的方法(禁止 cmd 脚本)可能是使用 _popen 而不是 ShellExecute。
或者更好的是使用 mysqldump 的 --result-file 选项。
In this scenario the simplest approach (barring a cmd script) is probably to use _popen instead of ShellExecute.
Or better yet use the --result-file option to mysqldump.
无法保证此代码或网站的有效性,但我听说过 DosCommand .pas 不止一次。今晚我回家后会检查一下。
Cannot vouch for the validity of this code or site, but I've heard of DosCommand.pas more than once. I'll check it tonight when I get home.
您应该使用 CreateProcess 启动该过程并提供您在 STARTUPINFO< 的 hStrOutput 中创建的管道的一端/a> 结构。有 网上有很多例子。
You should start the process using CreateProcess and provide one end of a pipe you create in hStrOutput of the STARTUPINFO structure. There are plenty examples online.