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

VBS怎样根据word内容标题自动重命名word文件名?

[复制链接]
发表于 2011-1-26 17:15:31 | 显示全部楼层 |阅读模式

  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
复制代码
这是一段根据word内容标题自动为word重命名的代码。这段代码是从网上复制过来的
刚把这快代码发在批处理版块了。。这里想请各位帮忙看下这段代码怎么改进比较。可以减少错误发生率。。
因为在执行的时候会第几行错误。。。貌似假如文件内容标题在第二行,第一行是空行的,就不会自动搜索第2行的标题,望高手看个端倪。。

[ 本帖最后由 yhcbird 于 2011-1-26 17:21 编辑 ]
发表于 2011-1-26 22:21:27 | 显示全部楼层
Word.Application对象没用过

待我研究一番先
发表于 2011-1-27 01:27:32 | 显示全部楼层
刚开完盘车,然后看了下这题,写了代码如下:

  1. Dim fso,fc,f,strName
  2. Set fso = CreateObject("scripting.filesystemobject")
  3. Set fc=fso.GetFolder(".").Files
  4. For Each f In fc
  5.   If LCase(fso.GetExtensionName(f))="doc" Then
  6.     strName=GetFileName(f.Path)
  7.   End If
  8.   f.Name=strName & ".doc"
  9.   Exit For
  10. Next
  11. Set fso=Nothing
  12. Function GetFileName(FilePath)
  13.   Dim i,objWord,Doc
  14.   Set objWord=CreateObject("word.application")
  15.   Set Doc=objWord.Documents.Open(FilePath)
  16.   For i=1 To Doc.Paragraphs.Count
  17.     If Replace(Doc.Paragraphs(i).Range," ","")<>vbCr Then
  18.       GetFileName=Replace(Doc.Paragraphs(i).Range,vbCr,"")
  19.       Exit For
  20.     End If
  21.   Next
  22.   objWord.Quit
  23.   Set objWord=Nothing
  24. End Function
复制代码


这个代码有点还不是很到位的,就是,如果标题含有特殊字符 \ / * | 之类的,那必须要过滤。其实用replace语句可以解决的,这里我偷下懒就不写了,睡觉,晚安~
 楼主| 发表于 2011-1-28 09:35:31 | 显示全部楼层
辛苦了。测试下。没有成功。。。
发表于 2011-1-28 11:36:20 | 显示全部楼层
哦?我测试是没有问题的。出错提示什么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 07:26 , Processed in 0.017690 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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