在c+中执行shell命令+; 我有一个关于C++中执行shell命令的问题。我正在winforms vs 2008中构建一个应用程序。我的应用程序有一个按钮,当点击时应该将二进制文件解码为.csv文件。我可以先到正确的目录(cd Test_Copy2)解码文件,然后在命令提示符(java-jar tool.jar-bx.fit x.csv)中执行命令。我尝试了很多不同的东西,但不幸的是没有成功

在c+中执行shell命令+; 我有一个关于C++中执行shell命令的问题。我正在winforms vs 2008中构建一个应用程序。我的应用程序有一个按钮,当点击时应该将二进制文件解码为.csv文件。我可以先到正确的目录(cd Test_Copy2)解码文件,然后在命令提示符(java-jar tool.jar-bx.fit x.csv)中执行命令。我尝试了很多不同的东西,但不幸的是没有成功,c++,visual-studio-2008,winapi,shell,command-prompt,C++,Visual Studio 2008,Winapi,Shell,Command Prompt,我尝试使用: 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) 谁能给我举个例子说明如何做到这一点?我不知道哪里出了问题,大多数时候命令提示符会打开,但没有执行任何命令 如果您确实想在cmd.exe实例中运行jar,则需要在cmd.exe中

我尝试使用:

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)

谁能给我举个例子说明如何做到这一点?我不知道哪里出了问题,大多数时候命令提示符会打开,但没有执行任何命令

如果您确实想在cmd.exe实例中运行jar,则需要在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

您可以使用
system()
函数执行shell命令。 例如:
system(“DIR”)
在CMD shell中执行DIR命令。开始时的默认目录是
.exe
文件所在的目录。 'system(“PAUSE”)`执行暂停命令。 要执行的命令应作为常量字符串传递给函数

编辑: 对于您的paritcular程序,语法(IMO)为:


system(“java-jar-Tool.jar-bx.fit x.csv”)

CreateProcess?您应该描述在尝试所有不同的方式启动java应用程序时遇到的错误。是因为找不到java.exe二进制文件,还是因为java找不到你的.jar文件,或者是因为你的java应用找不到数据文件?谢谢你的回答,但是我如何先找到正确的目录?因为我的主目录和文件目录不一样!使用\u chdir()更改程序的当前工作目录。或者尝试
C:\\WINDOWS\\system32\\cmd.exe/C java-jar Tool.jar-b C:\\path\\to\\x.fit C:\\path\\to\\x.csv
。在程序中应避免使用
chdir
;这是一个隐藏的全局变量。