代码之家  ›  专栏  ›  技术社区  ›  Charles Faiga

使用Windows__ShellExecute_

  •  3
  • Charles Faiga  · 技术社区  · 15 年前

    我用的是__ 贝壳执行 _

    是否有任何方法可以将输出传输到文件?

    mysqldump.exe'-u user1-ppassword dbname>输出文件.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';
    

    但是这个不行

    4 回复  |  直到 15 年前
        1
  •  4
  •   RRUZ    15 年前

    @Charles,您可以在shellexecute中使用重定向程序simbol“>”,但可以使用作为Windows命令解释器的cmd.exe。

    试试这个样品

    ShellExecute(0,nil,'cmd.exe','/c MySqlDump.exe -u user1  -ppassword  dbName > TheOutputFile.Sql',nil,sw_normal);
    

    另一个选项是使用管道,您可以在这里找到一个非常好的示例 link .

        2
  •  1
  •   Logan Capaldo    15 年前

    在这个场景中,最简单的方法(禁止使用命令脚本)可能是 _popen 而不是ShellExecute。

    或者最好使用--result文件选项来mysqldump。

        3
  •  1
  •   Leonardo Herrera    15 年前

    无法保证此代码或网站的有效性,但我听说过 DosCommand.pas 不止一次。我今晚回家后再检查一下。

        4
  •  1
  •   Stijn Sanders    15 年前

    您应该使用 CreateProcess 并提供您在hsoutput中创建的管道的一端 STARTUPINFO 结构。有 plenty examples online .