java,python等语言对于rft的处理很受限,rtf提供了很少的api供外部调用处理,但是对于docx我们却又很多api来处理,所以很多人会有需求将rtf批量转为docx的需求,接下来就来说说解决方案

查询资料可知,rtf格式文件可以被word打开,同时还可以被另存为docx格式文件;

所以我们想如何才能通过脚本的方式来执行这样一个另存为的操作呢,word中的“宏”就可以解决这样的问题,可以编写脚本执行另存为,具体宏相关知识自行百度;

好了,脚本方式执行另存为达到批量转化rtf到docx的目的,接下来就是会考虑如果触发这个宏的运行,我们可以alt+f11进入vb编辑页面插入module,编写word打开的事件触发。触发事件的脚本,批量rft转为docx的宏脚本如下

rtfToDocx

Sub rtfToDocx()
Dim sEveryFile As String
Dim sBasePath As String
Dim sSourcePath As String
Dim sNewSavePath As String
Dim sDestPath As String
Dim CurDoc As Object
sBasePath = "C:\Users\wangj01052\Desktop\tools\"
sSourcePath = sBasePath & "rtf\"
sDestPath = sBasePath & "docx\"
sEveryFile = Dir(sSourcePath & "*.Rtf")
Do While sEveryFile <> ""
Set CurDoc = Documents.Open(sSourcePath & sEveryFile, , , , , , , , , , , msoFalse)
sNewSavePath = VBA.Strings.Replace(sDestPath & sEveryFile, ".Rtf", ".docx")
CurDoc.SaveAs2 sNewSavePath, wdFormatDocumentDefault
CurDoc.Close SaveChanges:=False
sEveryFile = Dir
Loop
Set CurDoc = Nothing
End Sub

AutoOpen

Sub AutoOpen()

Call rtfToDocx

End Sub

这些操作完后在每次打开这个工具word后就会触发转化操作;

之后你可能还会想如果这个转为工作能做个计划任务就好了,此时就可以考虑用window的计划任务了,计划任务如何配置可以自行百度,现在关键的地方在于如果通过能被window执行的脚本启动word触发宏事件转化操作,我们这里可以用bat批量cmd脚本方式,具体脚本如下

start winword.exe tool.doc

到这里,批量定时任务将rtf文件转为docx的工作就完成了!

批量定时任务将rtf文件转为docx,入参是rtf文件夹,生成一个docx文件夹的更多相关文章

  1. 用php生成一个excel文件(原理)

    1.我们用php来生成一个excel文档来讲述其原理: excel2007里面的文档目录组成部分为: 2.我们使用ZipArchive()方法来生成一个简易的excel文件. 使用方法: 3.代码如下 ...

  2. Bitmap文件格式+生成一个BMP文件

    Bitmap的文件格式: #define UINT16 unsigned short #define DWORD unsigned int #define WORD short #define LON ...

  3. Log4j使用笔记:每天生成一个日志文件、按日志大小生成文件

    其中TestLog4j.java如下: package cn.zhoucy.test; import org.apache.log4j.Logger; public class TestLog4j { ...

  4. 非正常关闭vi编辑器时会生成一个.swp文件

    非正常关闭vi编辑器时会生成一个.swp文件 关于swp文件 使用vi,经常可以看到swp这个文件,那这个文件是怎么产生的呢,当你打开一个文件,vi就会生成这么一个.(filename)swp文件以备 ...

  5. python excel操作 练习:#生成一个excel文件,生成3个sheet,每个sheet的a1写一下sheet的名称。每个sheet有个底色

    练习:#生成一个excel文件,生成3个sheet,每个sheet的a1写一下sheet的名称.每个sheet有个底色 #coding=utf-8 from openpyxl import Workb ...

  6. salesforce 零基础学习(五十三)多个文件生成一个zip文件(使用git上封装的代码)

    此篇参考git代码:https://github.com/pdalcol/Zippex 学习salesforce可以访问一个朋友的网站:https://www.xgeek.net 首先感谢git上提供 ...

  7. 原创:无错版!让DEDE只生成一个RSS文件,不分栏目

    DEDE为每一个栏目都独立创建一个rss文件, 如果用户要整站订阅相当不方便.  所以需要修改让dede只生成一个rss. 网上大部分帖子要么是抄, 要么是有问题少了步骤. 今天特意整理下. 分享.. ...

  8. HTML 5 应用程序缓存(Application Cache)cache manifest 文件使用 html5 中创建manifest缓存以及更新方法 一个manifest文件会创建一份缓存,不同的manifest文件其缓存的内容是互不干扰的

    HTML5 离线缓存-manifest简介 HTML 5 应用程序缓存 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. 什么是应用程序缓存(A ...

  9. ROS知识(16)----如何编译时自动链接同一个工作空间的其他包的头文件(包含message,srv,action自动生成的头文件)

    catkin_make编译时,往往需要自动链接同一个工作空间的其他包的头文件.否则会出现类似如下的错误: /home/xx/xx_ws/srcA_package/src/db.hpp:13:26: f ...

随机推荐

  1. SYSTEM32 下的几乎所有文件的简单说明(原由无忧启动论坛老毛桃出)

    SYSTEM32 下的几乎所有文件的简单说明(原由无忧启动论坛http://bbs.wuyou.com老毛桃出): clui.dll .....Security Descriptor Editor,没 ...

  2. hud 4347 The Closest M Points(KD-Tree)

    传送门 解题思路 \(KD-Tree\)模板题,\(KD-Tree\)解决的是多维问题,它是一个可以储存\(K\)维数据的二叉树,每一层都被一维所分割.它的插入删除复杂度为\(log^2 n\),它查 ...

  3. HDU 5952 Counting Cliques(dfs)

    Counting Cliques Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  4. python杂谈

    1.for循环过界保护 例如: a=len([1,2,3]) for i in range(a): for j in range(i+1:a) print(i,j) 不会报错 2.python集合和列 ...

  5. StringTokenizer拆分字符串

    今天要做一个过滤特殊字符的需求, 看了下公司以前过滤特俗字符代码, 用的居然是 StringTokenizer, 完全不熟悉啊, 于是恶补了一下, 把StringTokenizer在JDK中的文档也翻 ...

  6. python字符串常见操作

    字符串常见操作 如有字符串mystr = 'hello world itcast and itcastcpp',以下是常见的操作 <1>find 检测 str 是否包含在 mystr中,如 ...

  7. POJ - 3176 Cow Bowling 动态规划

    动态规划:多阶段决策问题,每步求解的问题是后面阶段问题求解的子问题,每步决策将依赖于以前步骤的决策结果.(可以用于组合优化问题) 优化原则:一个最优决策序列的任何子序列本身一定是相当于子序列初始和结束 ...

  8. CSS中设置字体样式

    <style type="text/css"> body{ font-family: SimHei,"微软雅黑",sans-serif; } < ...

  9. mybatis注解开发实体类属性和数据库字段不对应问题

    /** * 查询所有用户 * @return */ @Select("select * from user") @Results(id="userMap",va ...

  10. Jquery的Ajax实现异步刷新

    在Jquery中提供了一套ajax的方法,有: $.ajax([data],fn) load(url, [data], [callback]) $.get(url, [data], [callback ...