如何从Delphi运行命令行?

4

我该如何从我的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);

但是它没有起作用。有人能提供一个解决方案吗?
1个回答

10
要运行CMD命令,您需要使用cmd.exe/C标志:
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);

然而,这样会创建两个不同的会话,所以它不起作用。但是你可以使用ShellExecute直接运行appname.exe,像这样:
ShellExecute(0, nil, 'appname.exe',  '/stext save.txt', nil, SW_HIDE);

但是您需要正确指定文件名。
我会这样做:
var
  path: string;

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

假设appname.exe是当前应用程序。否则,将Application.ExeName替换为appname.exe的完整路径。


WS_HIDE 应该改为 SW_HIDE。我尝试编辑它,但收到了消息:编辑必须至少为6个字符... - Reto Höhener

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接