[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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这个录音,则复制到李四的目录下

  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
复制代码

TOP

回复 2# 522235677


    可以了,谢谢,就是有个小问题,如果录音文件中含有空格的话就检索不到?

TOP

回复 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
复制代码
1

评分人数

TOP

回复 4# 522235677


    非常感谢~

TOP

回复 4# 522235677


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

TOP

回复 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
复制代码

TOP

BAT如何根据名单中的内容搜索文件,并存放到指定目录下

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

TOP

返回列表