c++内调用命令行 不支持中文路径

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++内调用命令行 不支持中文路径相关的知识,希望对你有一定的参考价值。

我在c++程序中需要调用命令行执行某个exe程序,这个程序的完整路径如下:
c:\testing\中文目录\空格 目录\testing.exe
我已经在这个完整路径两端加上双引号再赋给system执行调用,但是发现失败。而如果直接从命令行输入完整的路径,是可以调用的。最后发现如果在c++程序中用这样的方法调用执行exe,是因为中文路径的原因导致的失败。想问问大家如何解决这个问题。

windows上你可以尝试使用_wsystem,传递宽字符路径。

比如

_wsystem(L"测试\\\\test.exe");

 不知道你在传递给system函数时,是否将路径的分隔符转义了?如果没有转义,肯定会出现问题。确保代码中的字符串是:

"\\"c:\\\\testing\\\\中文目录\\\\空格 目录\\\\testing.exe\\""
参考技术A system("\\"c:\\\\testing\\\\中文目录\\\\空格 目录\\\\testing.exe\\"");

我这没问题

jmeter命令行执行脚本

为什么要命令行执行脚本:

1、图形化界面消耗更多资源,CPU和内存

2、图形化界面不支持大型的负载测试和性能测试

3、命令行测试支持持续集成,例如放到Jenkins这样的CI工具上

nohup:让程序在后台运行

-h:帮助,打印出有用的信息并退出

-n:以非GUI形式运行Jmeter

-t:Jmeter脚本路径

-l:输出结果路径,如果没有该文件就自动创建,可以生成csv或者jtl文件

-r:远程执行,启动远程服务

-H:代理主机,设置Jmeter使用的代理主机

-P:代理端口,设置Jmeter使用的代理主机的端口号

-e:在脚本运行结束后生成html报告

-o:保存html报告的地址,此文件必须不存在

-J:传递动态参数搭配    duration  持续时间  threadnum  线程数  loopcount  循环次数  ramp  告知Jmeter要在多长时间内建立全部的线程,默认值为0

 

例如:nohup jmeter -n -t linux2Perf_nomonitor.jmx -l /Users/yangguangrun/Documents/jmeter_test/results/mohe/2daylinux.jtl -J dura=1800 -J threads=50 -J loops=3 -J ramp=20 -e -o /Users/yangguangrun/Documents/jmeter_test/reports/mohe/twodaylinux

当前窗口运行命令(窗口关闭后命令即停止运行):去掉前缀--nohup即可

 

以上是关于c++内调用命令行 不支持中文路径的主要内容,如果未能解决你的问题,请参考以下文章

已经有了一个在命令行下调用c++ dll库文件的java程序,如何在eclipse中设置相关路径?

通过编译器环境变量或 C 和 C++ 中的命令行标志指定库路径?

SVN提交命令行与php中变量内的路径

c++程序中,无法识别中文路径怎么办

c++ system 运行程序 中文路径

如何获取文件名命令行参数的完整路径?