在VC里执行cmd命令

在代码里执行cmd命令,如果把它做成bat文件,我们可以用创建进程的方法去执行,bat文件作为exe,去运行,如果需要管理员权限,则可以Shellexec函数去执行,用提权的办法,使用runas参数。如果不提权使用CreateProcess也是可以的。

 

这里不论是使用执行cmd的四种命令里的一种,都需要把cmd命令写入string里,这里主要是cmd语法的问题,在bat文件里 用换行则是一条命令,多行就是多个cmd命令,一个命令占一行的写法已经成为潜规则。在一个string里写入多行的cmd命令,这是一个cmd的语法问题,而不是一个C++的语法问题。所以要避免去使用“\r\n” 去换行, 也不能用  \  符号,这个符号是C++语法里为书写方便为string作为编辑换行的。机器不是读取bat文件里的回车换行来确定是不是一个命令,而是在文件级别做的转换,是一个cmd命令的语法问题,和机器如何去识别多个cmd命令的问题。

一个cmd命令如果太长,为了书写方便,cmd提供给程序员^ 符号作为编辑换行,这和C++语法string的 \ 符号一样(\符号前面不能有空格)。而在一个行里要编辑多个cmd命令 ,则要用& 符号作为分隔符,  1&2&3 这里是三个命令。

 

cmd命令太长分成多行的写法
在c++中一语句太长,为了便于阅读会分成多行来写,在字符串换行处加一个反斜杠’\’,下一行前不能有空格或者Tab键;

例如:

char chstr2[] = "what are you doing\
over there";
 
而在cmd脚本中实现的同样功能的连接符是“^”。

例如:

echo  hello^
world
pause

 

在C++中执行cmd指令的两种方法:
方法1:system("ipconfig");  有黑色界面一闪而过,不适合。

同步执行, system函数在执行时,会停留在system语句上,直到cmd指令执行完毕;

方法2: WinExec("ipconfig",SW_HIDE);   

 异步执行 , WinExec函数在执行时,会顺序执行接下来的代码,不管其cmd指令是否执行完成;
 
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值