MFC创建并运行批处理失败问题

来源:互联网 发布:江苏国税普通发票软件 编辑:程序博客网 时间:2024/05/18 21:41

最近第一次用MFC写个功能极其简单的小工具,代替手动输入cmd命令forfiles /p “d:/test” /s /m .json /c “cmd /c del @path”,去循环查找并删除文件目录及子目录下某个关键字的文件(此处为删除d:/test目录下所有json文件)。我的做法是做一个MFC对话框,可以选择要作用的磁盘目录和关键字,在点击确定后的响应函数中两步处理:1、将参数文件目录和关键字合成完整的cmd命令写入批处理文件;2.调用system函数运行批处理文件。

碰到的问题:
1.通过CString合成的cmd命令成功写入批处理文件了,但是发现运行时cmd窗口一闪而过,检查运行结果也没有成功删除文件。
2.既然没成功我就开始了漫长的菜鸟调试之旅,通过各种百度“MFC调用批处理”,发现能搜到的大多回答都是主要都是调用system,shellexecute、createprocess等方法,而且无论是网络上多年的提问者们还是我自己,各种尝试还是不行,不行到怀疑人生。
3.终于,山穷水复疑无路,柳暗花明又一村。调试过程中偶然发现还有CStringA这个类型,于是拿CStringA代替CString尝试,结果一气呵成。

问题分析和总结:
定位到CStringA和CString的差别后,查到批处理运行不成功的原因是批处理只支持ASCII格式,不支持Unicode(我的开发环境:window7中文版,MFC中编码格式Unicode),所以命令不能被有效识别。

感悟:
1.需要学习掌握ASCII,Unicode,UTF-8相关知识
2.很多问题百度不出来,各种论坛回答不可能覆盖所有情形,提问者需要对各种回答保留“问题场景不一致”的怀疑方向。

原创粉丝点击