【问题标题】:Send Parameter To CMD将参数发送到 CMD
【发布时间】:2010-08-18 19:26:26
【问题描述】:

如何向 CMD 发送参数?例如发送一条路径并从该路径开始?如何执行 CMD 命令? 谢谢

【问题讨论】:

    标签: delphi delphi-7


    【解决方案1】:

    要启动cmd.exe 并立即执行命令,请使用/K 标志:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ShellExecute(Handle, nil, 'cmd.exe', '/K cd C:\WINDOWS', nil, SW_SHOWNORMAL);
    end;
    

    要在cmd.exe 中运行命令然后立即关闭控制台窗口,请使用/C 标志:

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      ShellExecute(Handle, nil, 'cmd.exe', '/C del myfile.txt', nil, SW_SHOWNORMAL);
    end;
    

    【讨论】:

    • 感谢您的帮助,但有一个小问题,当我使用这个时:ShellExecute(Handle, nil, 'cmd.exe', '/K cd C:\WINDOWS', nil, SW_SHOWNORMAL) ; cmd 将执行但不在我输入的路径上,它从我保存项目的位置开始。
    • 我邀请您阅读documentation about ShellExecute,Armin。在那里您将了解第五个参数的用途。
    • 我不知道是怎么回事,但经过一些尝试,它可以正常工作。谢谢你,这是有用的帮助。
    【解决方案2】:

    您也可以使用 Process 类 - 请参阅下面的示例

    AProcess := TProcess.Create(nil); // Create process
    AProcess.Executable := 'cmd';                             // Executable to run
    AProcess.Parameters.Add('/T:B0');                         // Set background colour
    AProcess.Parameters.Add('/K');                            // Keep open
    
    AProcess.Parameters.Add('title');                         // A title for cmd
    AProcess.Parameters.Add('My Console');                    // Title
    AProcess.Parameters.Add('&&');                            // Start a new command line
    AProcess.Parameters.Add('cd');                            // Change directory
    AProcess.Parameters.Add('D:\X\');                        // Path to Folder
    
     {Set environment variable}
    AProcess.Parameters.Add('&&');                            // Start a new command line
    AProcess.Parameters.Add('HOME='+MYSQL_DIR);                // Set env example
    
    AProcess.Parameters.Add('&&');                            // Start a new command line
    AProcess.Parameters.Add('mysql.exe');                     // run mysql.exe
    AProcess.Parameters.Add('--host=' + VAR_HOST);          // Parameter server
    AProcess.Parameters.Add('--port=' + VAR_PORT); // Parameter mysql server port
    
    AProcess.Execute; // execute detatched process command window remains visible
    AProcess.Free;    // free memory        
    

    【讨论】:

      猜你喜欢
      • 2015-09-18
      • 2018-10-27
      • 2017-03-02
      • 2017-08-26
      • 2011-05-20
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      相关资源
      最近更新 更多