用C++ 实现cmd批处理指令的程序。

代码如下:运行报错,怎么改?voidtestCmdCommandLine(){charszCmd[256]={0};//删除d盘中的文件夹new1及其子文件夹中所有内容s... 代码如下:运行报错,怎么改?
void testCmdCommandLine() { char szCmd[256] = {0}; //删除d盘中的文件夹new1及其子文件夹中所有内容 sprintf(szCmd, "%s%s","cmd.exe /k rmdir /s /q ","d://new1"); RunCmdCommandLine(szCmd); } bool RunCmdCommandLine(LPCTSTR lpstrCmd) { STARTUPINFO si = {0}; si.cb = sizeof(si); si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW; si.hStdError = (HANDLE)2; si.hStdInput = (HANDLE)0; si.hStdOutput = (HANDLE)1; // si.wShowWindow = SW_HIDE; PROCESS_INFORMATION pi; CreateProcess( 0, (LPSTR)lpstrCmd, 0, 0, TRUE, 0, 0, 0, &si, &pi); return TRUE; }
错误提示:error C2664: 'RunCmdCommandLine' : cannot convert parameter 1 from 'char [256]' to 'LPCTSTR'
error C2664: 'CreateProcessW' : cannot convert parameter 2 from 'LPSTR' to 'LPWSTR'
展开
 我来答
水焱新火
2014-01-07 · TA获得超过256个赞
知道小有建树答主
回答量:144
采纳率:100%
帮助的人:125万
展开全部
你使用了W后缀的API,那么就是unicode编码,而char默认是Ansi编码,所以指针是错的,
两个办法,1,直接用CreateProcessA,但是这工程默认是u的, LPCTSTR 就是U的,所以不好,那么第二个办法,把字符串用_T("xxxx")宏处理一下,或者定义一个tchar字符串,CreateProcess里面也不需要LPSTR强制转换,因为他是u工程,默认W后缀,需要U编码字符串,你不能转会char*,
顺带说LPSTR就是char*,LPCTSTR 会跟随工程设置自动转换char* 还是tchar*
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友15c6602
2014-01-07 · TA获得超过662个赞
知道小有建树答主
回答量:366
采纳率:69%
帮助的人:163万
展开全部
void testCmdCommandLine() { char szCmd[256] = {0}; //删除d盘中的文件夹new1及其子文件夹中所有内容
sprintf(szCmd, "%s%s","cmd.exe /k rmdir /s /q ","d://new1");
(LPCTSTR)(LPTSTR)szCmd; //将char数组转LPCTSTRRunCmdCommandLine(szCmd); }

bool RunCmdCommandLine(LPCTSTR lpstrCmd) {
USES_CONVERSION; LPWSTR lpstrCmd2= A2W(lpstrCmd) ;//将LPCTSTR转LPSTR STARTUPINFO si = {0};
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;
si.hStdError = (HANDLE)2;
si.hStdInput = (HANDLE)0;
si.hStdOutput = (HANDLE)1;
// si.wShowWindow = SW_HIDE;
PROCESS_INFORMATION pi;
CreateProcess( 0, (LPSTR)lpstrCmd2, 0, 0, TRUE, 0, 0, 0, &si, &pi); return TRUE; }
试一下,不行把文件发给我
追问
不行,还是提示那些错误,我是在VS2008下运行的。 LPWSTR lpstrCmd2= A2W(lpstrCmd) ;这句提示:error C2440: '=' : cannot convert from 'LPCTSTR' to 'LPCSTR'。其他 的错误没变。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式