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++内调用命令行 不支持中文路径的主要内容,如果未能解决你的问题,请参考以下文章