找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31358|回复: 6

[文本处理] doc文件不转换成txt能直接提取里面的内容重命名文件名吗?

[复制链接]
发表于 2011-1-26 08:42:29 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-9-14 00:12 编辑

比如说:有一个doc文件叫做“新建 Microsoft Word 文档.doc”文件,
“新建 Microsoft Word 文档.doc”内容:
                  中华人民共和国行政处罚条例
                          199X年X月X日
第一条  。。。。。。。。。。。。。。。。。。
第二条 。。。。。。。。。。。。。。。。。。等
现在不想通过doctotext.exe这些第三方软件转换成txt文件然后在进行文本操作,想直接根据doc文件里面的内容把doc文件名改成:“中华人民共和国行政处罚条例199x年x月x日.doc” 的这样用纯批有可能实现吗???

用doctotext.exe转换后的txt文件,我很开心的就写了下面的代码,然后一按,奶奶的 在处理转换后的txt文件时会出现乱码。悲剧了。这个是什么原因啊:
  1. @echo off

  2. setlocal enabledelayedexpansion
  3. for %%a in (*.doc) do (

  4. doctotext "%%a">"%%~na.txt" 这里处理的文本正常的

  5. for /f "delims=" %%j in ('findstr /n .* %%~na.txt') do (echo %%j >>5.txt) ::这里的5.txt乱码
  6. for /f "tokens=2 delims=:" %%i in ('findstr /r "1 2" 5.txt') do (
  7. set "var=!var!%%i")

  8. ren "%%a" "!var!.doc"

  9. )

  10. del 5.txt

  11. 未完成
复制代码
在此之间我加了删除空行的代码。上面没写。。。

[ 本帖最后由 yhcbird 于 2011-1-26 13:42 编辑 ]
 楼主| 发表于 2011-1-26 10:20:43 | 显示全部楼层
如果不能用纯批,大家有没有稍微简洁版的doc转txt的命令行工具,我的是这样的:
里面辅助文件太多了。
发表于 2011-1-26 12:47:31 | 显示全部楼层
可以调用VBS来读取doc文件的内容

VBS对Office软件Word、Excel等的操作实例
http://bbs.bathome.net/thread-5868-1-1.html
 楼主| 发表于 2011-1-26 13:41:27 | 显示全部楼层
vbs完全看不懂。。更加的悲剧。。。英文看不懂- -

[ 本帖最后由 yhcbird 于 2011-1-26 14:08 编辑 ]
发表于 2011-1-26 15:21:21 | 显示全部楼层
doctotext生成的是文本文件是UTF-8编码,批处理无法直接识别。
 楼主| 发表于 2011-1-26 15:33:09 | 显示全部楼层
用ConCmd.exe转换吗?编码GB2312
其实我的主要目的很简单,就是把doc文件拖到批处理进去实现doc文件名改成doc文件里面内容标题的名字。但是如果我用上面的方法,即使成功了貌似效率也很低。。

[ 本帖最后由 yhcbird 于 2011-1-26 16:15 编辑 ]
 楼主| 发表于 2011-1-26 16:57:07 | 显示全部楼层
在网上找1个根据标题自动重命名的vbs代码。这里跟大家分享一下。
  1. set fso=createobject("scripting.filesystemobject")
  2. set folder=fso.getfolder(".")
  3. set files=folder.files
  4. for each file in files
  5. if lcase(right(file,3))="doc" then
  6. a=1
  7. Set objWord = CreateObject("Word.Application")
  8. Set objDoc = objWord.Documents.Open(cstr(file))
  9. wjm=objDoc.Paragraphs(1).Range
  10. objWord.Quit
  11. if file.name <> replace(wjm,vbcr,"") & ".doc" then createobject("wscript.shell").run "cmd /c ren " & chr(34) & file.name & chr(34) & " " & chr(34) & wjm & ".doc" & chr(34),0
  12. end if
  13. next

  14. if a=1 then
  15. msgbox "操作成功!",4096,"提示"
  16. else
  17. msgbox "对不起,没有在【" & folder & "】下找到WORD文件",4096,"提示"
  18. end if
复制代码


但是这个代码有点小问题。有些文件会出错。我不知道是什么原因。因为对vbs不懂。。大家帮忙测试下。。。

[ 本帖最后由 yhcbird 于 2011-1-26 16:58 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 02:29 , Processed in 0.028576 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表