利用自带的 purge.bat 可靠性更高,自己写的程序从逻辑上应该是没有问题的,没有仔细研究过自带的 purge.bat,不知道里面是否带有文件校验。
理论上来说,清理历史版本只是根据文件最后一个后缀的大小来确定保留那个文件,这一逻辑是否存在 bug 还需要继续测试。

方法一:利用 powershell 优化 Creo 自带 purge.bat

该方法在代码上很简单,先利用 purge 清理历史版本,然后再重命名小版本为 1。
印象中 Creo2.0 自带的 purge.bat 是可以直接复制到相应目录双击运行来清理小版本的,不知道 6.0 的为什么不行了。然后就用 powershell 给它套了个壳,顺便把所有小版本都改为 1。

Get-ChildItem *.* | ForEach-Object {$file = $_$file.IsReadOnly = $false
}
&'C:\Program Files\PTC\Creo 6.0.4.0\Parametric\bin\purge'
Get-ChildItem *.[0-9]* | Rename-Item -NewName {$_.fullname -replace '\.[0-9]*$' ,'.1'}

方法二:使用 c++编写可执行程序

  1. 遍历目录,将所有文件初始化为_FileExt 实例,存入 vector 中,按文件名顺序排序。
    实际测试过程中发现,_findnext()就是按照文件名顺序,不进行手动排序也没有问题。这里为了保险,增加一步排序。
void ListFileByType(const char *path, const char *match, vector<_FileExt> &files)
{//文件句柄intptr_t hFile = 0;//文件信息struct _finddata64i32_t fileinfo; //包含中文目录,使用宽字符string p;if ((hFile = _findfirst(p.assign(path).append("\\").append(match).c_str(), &fileinfo)) != -1) //查找目录下文件,并将信息存入fileinfo{do{//排除目录if (strcmp(fileinfo.name, ".") == 0 || strcmp(fileinfo.name, "..") == 0)continue;p.assign(path).append("\\").append(fileinfo.name);_FileExt file(p.c_str());files.push_back(file); //_FileExt自建类,包含绝对路径和扩展名} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}sort(files.begin(), files.end(), sortbyname);
}
  1. 将后缀转化为数字,如后缀不是数字,返回值为 0
int str2int(const string istr)
{istringstream ss;ss.str(istr);int ret = 0;ss >> ret;return ret;
}
  1. 遍历文件列表,比较文件名相同的两个文件的后缀,即小版本号,删除版本号较小的一个。
  2. 对清理后的文件重新名,将小版本号改为 1。
  3. 可执行程序后面可接受一个目录作为参数,实现清理指定目录。可将该可执行程序目录放入系统环境变量中方便使用

问题及解决方案

  1. 源码字符集和执行字符集
    如果是纯英文,也就是纯 ASCII 字符,完全不用考虑编码问题,一旦涉及中文就变得非常麻烦。
    按照下面文章的说法,源码文件中涉及中文时,把编码改为 utf-8 with BOM,并添加"#pragma execution_character_set(“utf-8”)",实际测试中发现,不添加#pragma 也没有异常,可能是默认的 locale 字符集就是 utf-8。测试中还发现,将源码文件改为 Unicode 也是没有问题的。
    参考:C++ 编译器对字符编码的要求和处理方式
  2. 字符串的处理
    为了简化和统一字符串的处理,当前程序第一次尝试了尽量采用 char 数组,非必要情况下不使用宽字符。

源代码

0.2purge

Creo 二次开发-清理历史版本相关推荐

  1. creo二次开发python_使用C#/.net语言进行ProE/Creo二次开发

    随便哪个版本的Visual studio 设置系统环境变量 通常这个环境变量在安装ProE的时候如果选择安装VBAPI就会自动设置 注意32位和64位操作系统路径是不同的.我的是64位操作系统. 然后 ...

  2. Creo二次开发异步模式配置

    异步模式是Creo二次开发的另外一种形式,被广泛应用于一些外部调用中.其配置过程如下: (1)      创建MFC程序(对话框程序都可以了) (2)      配置工程常规选项 (3)      配 ...

  3. ProE二次开发 Creo二次开发 MCADEx Tools 免费工具QQ群 156242985

    ProE二次开发 Creo二次开发 MCADEx Tools 免费工具QQ群 156242985 转载于:https://www.cnblogs.com/esdtech/p/4199884.html

  4. creo 二次开发 protookit 官方make file 案例试运行

    刚开始学习creo的二次开发, 用的是creo 7.0.0, vs 版本是2017 protookit的安装是在安装creo的时候选装的. VS一定要去微软官网去下载社区版,免费的,不要在乱七八糟的下 ...

  5. Creo二次开发的第一个案例及报错处理(Creo6.0+ VS2017)

    1.版本确认 在进行环境配置前,务必要确认Creo的版本及其对应的VS版本(C++版本)要求,这个可以百度查询 根据我安装的Creo版本来看,其他版本没有测试过 Creo3.0对应VS2015 Cre ...

  6. CAD二次开发 -可恶的版本问题

    首先是开发工具的选择,对于CAD可以有多种方法进行二次开发以拓展其功能.第一大类是Lisp,使用Lisp进行开发,方便快捷,能迅速的学习掌握,投入使用,但缓慢的运行速度和有限的功能是Lisp的最大问题 ...

  7. Proe Creo 二次开发之修改模型中的草绘模型--特征元素树

    [1]通过调用二次开发接口ProSolidFeatVisit(),获得模型的草绘特征. [2]通过二次开发接口ProFeatureElemtreeCreate()获得草绘特征元素树. [3]获得草绘特 ...

  8. Creo二次开发--内存清理函数

    我们在处理模型文件时,总会遇到内存环境的清除问题.一个干净的Creo工作环境.是保证工作能顺利完毕的保障. ProMdlEraseNotDisplayed()函数提供了清除未显示模型的功能. 当须要循 ...

  9. Creo二次开发 Creo4.0 Qt5 动态部署发布

    问题描述: 编译完成后的*.dll使用dat文件手动注册进creo后,启动dll失败,报错信息不清晰,轨迹文件无明确错误定位 开发环境: value key Qt Qt5.8 msvc_2015 官方 ...

最新文章

  1. Hhadoop环境部署
  2. P4254-[JSOI2008]Blue Mary开公司【李超树】
  3. 保定有国家承认的计算机学校吗,河北省122所大学名单,不在名单内的都是国家不承认的野鸡学校...
  4. nosql的数据服务_使用NoSQL实现实体服务–第1部分:概述
  5. android开发app初始化,安卓快速开发框架(一)XBaseAndroid初始化使用
  6. 能让你的Intellij IDEA 起飞的几个设置(设置背景 字体 快捷键 鼠标悬停提示 提示忽略大小写 取消单行显示)
  7. Python自动化测试|如何解决前置模块及数据依赖(二)
  8. 串口 浮点数 结构体_组态软件与串口服务器的配置
  9. 随想录(比技术更重要的是产品)
  10. BCHN近期收到一笔1000 BCH的匿名捐款
  11. 宿主机172连接容器mysql_开发时从宿主机连接容器中的MySQL
  12. Django 分页器 缓存 信号 序列化
  13. 四、Oracle的复杂查询
  14. Android 项目规范
  15. 插值拟合模型 之 Hermite插值、三次样条插值
  16. 如何在html中在线编辑word文档,web版word在线编辑
  17. TOM邮箱|国内适合商务人士的邮箱是什么邮箱
  18. 如何突破社会阶层,向上进阶?
  19. 什么是 A 轮融资?有 B轮 C轮么?
  20. 华硕PRIME Z390-P主板设置开启虚拟化技术

热门文章

  1. unity鼠标跟随(ITween)
  2. Qualcomm usb modem驱动小结
  3. spring拦截器使用及拦截器中获取Controller实例
  4. 如何将Git仓库备份到本地?
  5. 推荐一个opengl系统学习的教程
  6. MySQL多表查询之GroupBy
  7. 一对一直播系统源码的开发是推动直播发展的重要一环节...
  8. php+微信小程序 websocket
  9. 2000行C代码实现简易版“阿尔法狗”
  10. Java steam统计