Board logo

标题: [文件操作] 如何将硬盘上含指定文本的Word文档自动复制到U盘中? [打印本页]

作者: tangqingfu    时间: 2013-5-29 18:36     标题: 如何将硬盘上含指定文本的Word文档自动复制到U盘中?

本帖最后由 tangqingfu 于 2013-5-29 18:38 编辑

请教如何通过Bat程序搜索硬盘上的所有Word文档,将所有含“初级焊工”、“水平测试”等文本的Word文档自动复制到U盘的名为“筛选”的文件夹中?
这里所有的U盘盘符是动态,比如说在一台电脑上U盘是G盘,在别一台电脑上U盘可能是H盘
作者: Batcher    时间: 2013-5-29 20:02

  1. @echo off
  2. set "str=c d e f g h i j k l m n o p q r s t u v w x y z"
  3. for %%a in (%str%) do (
  4.     for /f %%h in ('fsutil fsinfo drivetype %%a:^|findstr "Removable.* 可移动"') do (
  5.         set DriveU=%%h
  6.     )
  7. )
  8. for %%a in (%str%) do (
  9.     if exist %%a:\nul (
  10.         pushd %%a:\
  11.         for /r %%b in (*初级焊工*.doc* *水平测试*.doc*) do (
  12.             copy /y "%%b" "%DriveU%\筛选"
  13.         )
  14.         popd
  15.     )
  16. )
复制代码

作者: tangqingfu    时间: 2013-5-29 20:19

回复 2# Batcher

奇怪,我将bat文件放置在U盘中运行,运行后没发现在U盘有“筛选”的文件夹。
能否请版主帮我看一下是怎么回事?
作者: Batcher    时间: 2013-5-29 20:24

  1. @echo off
  2. set "str=c d e f g h i j k l m n o p q r s t u v w x y z"
  3. for %%a in (%str%) do (
  4.     for /f %%h in ('fsutil fsinfo drivetype %%a:^|findstr "Removable.* 可移动"') do (
  5.         set DriveU=%%h
  6.     )
  7. )
  8. md "%DriveU%\筛选" 2>nul
  9. for %%a in (%str%) do (
  10.     if exist %%a:\nul (
  11.         pushd %%a:\
  12.         for /r %%b in (*初级焊工*.doc* *水平测试*.doc*) do (
  13.             copy /y "%%b" "%DriveU%\筛选"
  14.         )
  15.         popd
  16.     )
  17. )
复制代码

作者: tangqingfu    时间: 2013-5-29 20:31

回复 4# Batcher

太谢谢了,这次通过了!
作者: tangqingfu    时间: 2013-5-29 20:37

回复 4# Batcher

不知能否添加一个计算bat程序运行的总时间的代码?
作者: tangqingfu    时间: 2013-5-29 20:55

回复 4# Batcher
如果要将U盘上含指定文本的Word文档自动复制到硬盘的指定路径下该如何编写?
作者: 522235677    时间: 2013-5-29 20:58

等文本的Word文档

文件名含有那些字,还是word中包含那些字?
作者: tangqingfu    时间: 2013-5-29 21:01

等文本的Word文档

文件名含有那些字,还是word中包含那些字?
522235677 发表于 2013-5-29 20:58


不是文件名,而是Word文档中包含的文本。
能否请兄台帮忙编写要将U盘上含指定文本的Word文档自动复制到硬盘的指定路径下的代码?。能否再添加个计算bat程序运行的总时间的代码(即从开始与结束的时间差)
作者: Batcher    时间: 2013-5-29 21:01

回复 6# tangqingfu


这里有函数,你自己试试吧。
http://www.bathome.net/thread-4701-1-1.html
作者: tangqingfu    时间: 2013-5-29 21:45

本帖最后由 tangqingfu 于 2013-5-29 22:17 编辑

回复 4# Batcher
原来测试还能成功,后面将U盘上的“筛选”文件夹删除,再运行bat代码,在CMD窗口中有复制动作,且可以在U盘中建立“筛选”文件夹,但该文件夹为空,没有任何文件,怎么回事?
作者: tangqingfu    时间: 2013-5-30 07:55

回复 4# Batcher
代码通过,无论是否对U盘进行重命名。
作者: AA_168    时间: 2013-5-31 22:39

都是神呀。
作者: tangqingfu    时间: 2013-6-4 14:06

回复 4# Batcher

经terse兄提醒,发现Batcher兄的代码是搜索的文件名,而不是文件内容。
请教如何将硬盘上所有Word文档内容中含有指定文本的Word文档自动复制到U盘中?
作者: Batcher    时间: 2013-6-4 15:34

回复 14# tangqingfu


    不是已经有人帮你写了VBS代码了么
作者: tangqingfu    时间: 2013-6-4 16:30

本帖最后由 tangqingfu 于 2013-6-4 16:31 编辑

回复 15# Batcher
您是指http://www.bathome.net/thread-24657-1-1.html6楼的apang兄的代码吗?
测试过,感觉速度不是很快。不知您能否用bat代码编写一个在后台快速复制的代码?
作者: Batcher    时间: 2013-6-4 17:46

回复 16# tangqingfu


BAT本身无法直接处理word/excel之类的非纯文本文件
你可以请他把这个功能去掉看看是否能提高效率:
楼主没考虑文件重名的情况,如果有重名,则在文件名后依次加[1]、[2]等数字。


或者试试用BAT调用第三方命令行工具把word转换成txt,然后再处理,看看效率如何,参考:
http://www.bathome.net/thread-22123-1-1.html
http://www.bathome.net/thread-20046-1-1.html
http://www.bathome.net/thread-10929-1-1.html
作者: tangqingfu    时间: 2013-6-4 18:29

有些麻烦,只好作罢,谢谢Batcher兄!




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2