Board logo

标题: [文本处理] 批处理如何根据文本列出的内容搜索文件名含有指定字符串的文件并复制到指定目录下? [打印本页]

作者: magic50    时间: 2013-12-3 22:01     标题: 批处理如何根据文本列出的内容搜索文件名含有指定字符串的文件并复制到指定目录下?

本帖最后由 pcl_test 于 2017-7-5 19:54 编辑

现在有1个文本文件为1.txt,里面有3列
内容为:姓名 电话号码1 电话号码2(电话号码1可能为空),如下格式:
  1. 张三 111111 11111111
  2. 李四        22222222
  3. 王五 333333 33333333
复制代码
能否根据第2、3列电话号码分别搜索指定目录(D:\录音)的电话录音文件中是否含包含该号码,录音文件格式为来电-去电-时间.wav
如果存在该录音文件,则将该录音文件复制到 以“姓名”命名的文件夹内。
例如果有112356-22222222-20131203.wav这个录音,则复制到李四的目录下
作者: 522235677    时间: 2013-12-3 22:23

  1. @echo off
  2. for /f "tokens=1,2,3" %%a in (1.txt) do (
  3. for /f %%i in ('dir /b /s C:\Users\Admin\Desktop\录音文件夹') do (
  4. echo %%~ni|findstr "%%b %%c" && (if exist %%a (move "%%i" %%a) else (md %%a&move "%%i" %%a))
  5. )
  6. )
  7. pause
复制代码

作者: magic50    时间: 2013-12-3 22:44

回复 2# 522235677


    可以了,谢谢,就是有个小问题,如果录音文件中含有空格的话就检索不到?
作者: 522235677    时间: 2013-12-3 22:49

回复 3# magic50
  1. @echo off
  2. for /f "tokens=1,2,3" %%a in (1.txt) do (
  3.         for /f "delims=" %%i in ('dir /b /s C:\Users\Admin\Desktop\录音文件夹') do (
  4.                 echo %%~ni|findstr "%%b %%c" && (if exist %%a (move "%%i" %%a) else (md %%a&move "%%i" %%a))
  5.         )
  6. )
  7. pause
复制代码

作者: magic50    时间: 2013-12-3 22:55

回复 4# 522235677


    非常感谢~
作者: magic50    时间: 2013-12-4 09:35

回复 4# 522235677


    实际使用后发现一个问题,存放录音数量较多的情况下(20多万个文件,几千个子文件夹),执行效率比较慢。搜索8行记录等了30分钟也没有反应
作者: DAIC    时间: 2013-12-4 10:31

回复 6# magic50
  1. @echo off
  2. for /f "tokens=1,2,3" %%a in (1.txt) do (
  3.     echo 正在搜索:%%a %%b %%c
  4.     if not exist %%a\ (
  5.         md %%a
  6.     )
  7.     for /f %%i in ('dir /b /s /a-d "D:\录音\" ^| findstr "%%b %%c"') do (
  8.         move "%%i" %%a
  9.     )
  10. )
  11. pause
复制代码

作者: magic50    时间: 2017-7-5 17:32     标题: BAT如何根据名单中的内容搜索文件,并存放到指定目录下

名单为txt文件,只有一列电话号码,能否根据这列电话号码分别搜索指定目录(D:\录音)的电话录音文件中是否含包含该号码,录音文件格式为来电-去电-时间.wav。
如果存在该录音文件,则将这个文件拷贝到指定文件夹,如E:\wav。如果不存在,则记录该手机号码,并将没有记录的手机号码保存到1.txt中




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