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.很多问题百度不出来,各种论坛回答不可能覆盖所有情形,提问者需要对各种回答保留“问题场景不一致”的怀疑方向。
- MFC创建并运行批处理失败问题
- MFC 运行批处理 转
- MFC之socket创建失败
- SVN批处理备份失败--编码问题
- 文件创建失败问题
- Opencv2函数cvfindcontours在MFC框架下程序运行失败问题
- MFC入门学习之控件(2)创建一个对话框窗口并在运行时显示
- MFC DLL中创建CDialog失败
- OleInitialize 运行失败的问题
- 创建并运行maven项目
- 创建并运行maven项目
- 创建并运行maven项目
- 创建并运行maven项目
- vs2010创建Dll例子,并解决运行错误:应用程序正常初始化(0xc000000d)失败。请单击“确定”,终止应用程序。
- webstorm创建cordova项目运行失败
- CreateWindow创建失败的问题
- 以CRichEditView为基类的MFC单文档程序向导建立后编译成功运行失败问题
- bat批处理判断文件夹是否存在并创建文件夹
- 自学mysql—mysql索引
- IDEA配置JDK
- SourceTree 免登录跳过初始设置的方法
- LeetCode101. Symmetric Tree
- 时间日期操作
- MFC创建并运行批处理失败问题
- 大学期末考试SSM试题三
- 网络流 最小路径覆盖 二分图最大匹配
- Groovy初步了解
- php7环境下ThinkPHP报错:Cannot use 'String' as class name as it is reserved
- 动态规划 最长公共子序列
- CSS Mastery摘要(1)--Getting Your Styles to Hit the Target
- leetcode Perfect Number 完全数
- 一种别样的打印Log的方式