Выполнить команду оболочки в C ++ - PullRequest
0 голосов
/ 29 августа 2011

У меня есть вопрос относительно выполнения команд оболочки в c ++. Я создаю приложение в winforms, против 2008 года. У моего приложения есть кнопка, при нажатии которой необходимо декодировать двоичный файл в файл .csv. Я могу декодировать файлы, сначала перейдя в правильный каталог (cd Test_Copy2), а затем выполнить команду в командной строке (java -jar tool.jar -b x.fit x.csv). Я пробовал много разных вещей, но, к сожалению, никто не работал!

Я пытался использовать:

system,  _popen,  ShellExecute(NULL, L"open", L"C:\\WINDOWS\\system32\\cmd.exe ", L"java -jar Tool.jar -b x.fit x.csv", L"C:\\Test_Copy2", SW_SHOWNORMAL)

Может ли кто-нибудь дать мне пример того, как это сделать? Я не знаю, в чем дело, в большинстве случаев открывается командная строка, но команда не выполняется!

Ответы [ 2 ]

1 голос
/ 29 августа 2011

Вы можете использовать функцию system() для выполнения команд оболочки.Например: system("DIR") выполняет команду DIR в оболочке CMD.Каталог по умолчанию в начале - это каталог, в котором находится файл .exe.'system ("PAUSE") `выполняет команду PAUSE.Команда / ы, которые вы хотите выполнить, должны быть переданы в функцию в виде константной строки.

Редактировать:

Для вашей программы paritcular синтаксис (IMO) будет:

system("java -jar Tool.jar -b x.fit x.csv")

1 голос
/ 29 августа 2011

Если вы действительно хотите запустить jar в экземпляре cmd.exe, вам нужно добавить один из правильных ключей командной строки в cmd.exe, чтобы он работал так, как вам нужно:

/C      Carries out the command specified by string and then terminates
/K      Carries out the command specified by string but remains

Например, ваша командная строка должна быть:

C:\\WINDOWS\\system32\\cmd.exe /c java -jar Tool.jar -b x.fit x.csv
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...