标题: [文件操作] 如何将U盘上含指定文本的Word文档自动复制到硬盘的指定文件夹中? [打印本页]
作者: tangqingfu 时间: 2013-5-30 12:49 标题: 如何将U盘上含指定文本的Word文档自动复制到硬盘的指定文件夹中?
请教如何通过Bat程序搜索U盘上的所有Word文档,将所有含“初级焊工”、“水平测试”等文本的Word文档自动复制到D盘的名为“筛选”的文件夹中?
这里所有的U盘盘符是动态,比如说在一台电脑上U盘是G盘,在别一台电脑上U盘可能是H盘
作者: Batcher 时间: 2013-5-31 11:22
http://www.bathome.net/thread-24641-1-1.html
我已经告诉你如何获取盘符、如何获取文件了,要不你先自己尝试写一下?
能否成功没关系,把你尝试写的代码贴出来看看,我帮你改。
作者: terse 时间: 2013-5-31 14:18
纯批的处理的话 主要难点在 Word文档里 搜索中文关键词
作者: wuhengsi 时间: 2013-5-31 18:37
3楼说的是。
但是如果是从文件名字来识别的就好做了。
作者: tangqingfu 时间: 2013-6-1 07:26
本帖最后由 tangqingfu 于 2013-6-1 07:28 编辑
回复 3# terse
最好是能搜索中文和英文的,能否请terse兄帮忙编写?
作者: apang 时间: 2013-6-1 15:04
本帖最后由 apang 于 2013-6-2 15:10 编辑
保存为test.vbs,需要安装有MicroSoft OFFICE软件
复制U盘上含 初级焊工 或者含 水平测试 的word文档到D:\筛选(如果是含 初级焊工 并且含 水平测试,将26行or改成and)
楼主没考虑文件重名的情况,如果有重名,则在文件名后依次加[1]、[2]等数字。试试看吧- DstDir = "D:\筛选"
- Set fso = CreateObject("Scripting.FileSystemObject")
- If Not fso.FolderExists(DstDir) Then fso.CreateFolder(DstDir)
-
- Set objWord=CreateObject("Word.Application")
- Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" _
- & ".\root\cimv2")
-
- For Each Drv in fso.Drives
- If Drv.DriveType = 1 Then
- Set colFiles = objWMI.ExecQuery("Select * from CIM_DataFile " _
- & "where Drive = '"&Drv.Path&"' and Extension Like 'doc%'")
- For Each File in colFiles
- CopyDocFile File.Name
- Next
- Set colFiles = Nothing
- End If
- Next
-
- Sub CopyDocFile(f)
- n = 0
- Set objDoc = objWord.Documents.Open(f)
- str = objDoc.Range.Text
- objDoc.Saved = False : objDoc.Close
- Set objDoc = Nothing
- If InStr(str,"初级焊工") or InStr(str,"水平测试") Then
- Name = fso.GetBaseName(f) : NewName = Name
- Ext = "." & fso.GetExtensionName(f)
- While fso.FileExists(DstDir & "\" & NewName & Ext)
- n = n + 1
- NewName = Name & "[" & n & "]"
- Wend
- fso.GetFile(f).Copy DstDir & "\" & NewName & Ext
- End If
- End Sub
-
- Set objWMI = Nothing : objWord.Quit : Set objWord = Nothing
- MsgBox "OK"
复制代码
修改一下
作者: tangqingfu 时间: 2013-6-3 07:59
回复 6# apang
谢谢,感觉速度偏慢了点。
不知还有没有更高效的办法?
作者: CrLf 时间: 2013-6-4 17:30
回复 7# tangqingfu
搜文件内容本来就是强人所难,word的格式不是纯文本,还需要另行转换,别指望会快
作者: tangqingfu 时间: 2013-6-4 18:28
谢谢CrLf兄的提醒,只好作罢了
作者: apang 时间: 2013-6-5 09:03
现在的求代码者还真是牛XX
没人收你钱,不用拉倒,权当练习
作者: tangqingfu 时间: 2013-6-5 09:59
现在的求代码者还真是牛XX
没人收你钱,不用拉倒,权当练习
apang 发表于 2013-6-5 09:03
呵呵,apang兄误会了,原以为通过bat或vbs可以快速处理这类问题,后来才了解到处理Word这类文档没那么强大。代码已收藏学习,谢谢apang兄!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |