Как запустить командную строку из Delphi?



Как я могу выполнить эту команду из моего приложения Delphi?




C:myapppathappfolder>имя приложения.exe / stext сохранить.txt




Я попробовал следующий код:



ShellExecute(0, nil, 'cmd.exe', 'cd C:myapppathappfolder', nil, SW_Hide);
ShellExecute(0, nil, 'cmd.exe', 'appname.exe /stext save.txt', nil, SW_Hide);


Но это не сработало. Может ли кто-нибудь предложить решение?

892   1  

1 ответ:

Для запуска команды 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);
Тем не менее, это создаст две разные сессии, так что это не будет работать. Но вы можете использовать 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.

Comments

    Ничего не найдено.