如何从Delphi运行命令行?

ste*_*ve0 4 delphi

如何从我的Delphi应用程序运行此命令?

C:\ myapppath\appfolder> appname.exe/stext save.txt

我尝试了以下代码:

ShellExecute(0, nil, 'cmd.exe', 'cd C:\myapppath\appfolder', nil, SW_Hide);
ShellExecute(0, nil, 'cmd.exe', 'appname.exe /stext save.txt', nil, SW_Hide);
Run Code Online (Sandbox Code Playgroud)

但它没有用.有人能提供解决方案吗?

And*_*and 7

要运行CMD命令,您需要使用以下/C标志cmd.exe:

ShellExecute(0, nil, 'cmd.exe', '/C cd C:\myapppath\appfolder', nil, SW_HIDE);
ShellExecute(0, nil, 'cmd.exe', '/C appname.exe /stext save.txt', nil, SW_HIDE);
Run Code Online (Sandbox Code Playgroud)

但是,这将创建两个不同的会话,因此它将无法工作.但您可以使用ShellExecute appname.exe直接运行,如下所示:

ShellExecute(0, nil, 'appname.exe',  '/stext save.txt', nil, SW_HIDE);
Run Code Online (Sandbox Code Playgroud)

但是您需要正确指定文件名.

我会做

var
  path: string;

begin
  path := ExtractFilePath(Application.ExeName);
  ShellExecute(0, nil, PChar(Application.ExeName), PChar('/stext "' + path + 'save.txt"'), nil, SW_HIDE);
end;
Run Code Online (Sandbox Code Playgroud)

以防万一appname.exe是当前的申请.否则,替换Application.ExeName为完整路径appname.exe.