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

[问题求助] 批量查找指定文件夹里的文件并复制,代码救助!

[复制链接]
发表于 2017-12-25 10:52:56 | 显示全部楼层 |阅读模式
录音文件夹的检索,并复制出检索的结果。

A文件夹   源文件夹(大量文件存放目录,包含子目录)
B文件夹   存放查找出的文件夹(用于查找到文件复制存放目录)
1.txt       存放要查找的文件的名(不是全名,如txt的文件存放的是:13813813813 ,实际文件保存的名为:013813813813_20171921093617_067.WAV)

我在网上找到一段代码,代是提示找不到文件,请各位大能帮解决一下!谢谢!

代码如下:

@echo off
setlocal enabledelayedexpansion

rem set parameter here

rem 查找的源目录
set sourcePath=F:\录音
rem 复制到文件夹
set targetPath=E:\201705-201711
rem 要查找的文件列表
set fileList=1.txt

set /a copyCount=0

dir /s /b !sourcePath!>filelist.txt

for /f "delims=" %%i in (!fileList!) do (

        find "%%i" filelist.txt > findfile.txt

        if !errorlevel! equ 0 (

                for /f "skip=2 delims=" %%j in (findfile.txt) do (
                        copy /y %%j !targetPath!\%%i>nul
                        set /a copyCount+=1
                        )

                )else (
                echo can't find file %%i
        )

)

rem 查找文件目录
del filelist.txt
rem 找到的文件目录
del findfile.txt
echo ************************************
echo copy file success: !copyCount!
pause
发表于 2017-12-25 12:08:25 | 显示全部楼层
本帖最后由 yhcfsr 于 2017-12-25 12:30 编辑

可以肯定,这段代码使用的1.txt中存放的是带后缀的文件名,像题主这样只写出文件名部分字段,即使复制成功,去B文件夹文件夹看肯定全是没后缀的白色文件
至于提示找不到文件,如果是中文提示就是代码存在问题(我看了下这个可能不大);如果是英文提示,这是代码作者加上去的,表示源目录不存在1.txr中所列目录或文件
我稍微改了下,不过并不能解决找不文件的问题,我想你要仔细检查1.txt中的内容
  1. @echo off
  2. setlocal enabledelayedexpansion

  3. rem set parameter here

  4. rem 查找的源目录
  5. set sourcePath=F:\录音
  6. rem 复制到文件夹
  7. set targetPath=E:\201705-201711
  8. rem 要查找的文件列表
  9. set fileList=1.txt

  10. set /a copyCount=0

  11. dir /a-d /s /b !sourcePath!>filelist.txt

  12. for /f "delims=" %%i in (!fileList!) do (

  13.         find "%%i" filelist.txt > findfile.txt

  14.         if !errorlevel! equ 0 (

  15.                 for /f "skip=2 delims=" %%j in (findfile.txt) do (
  16.                         copy /y %%j !targetPath!>nul
  17.                         set /a copyCount+=1
  18.                         )

  19.                 )else (
  20.                 echo can't find file %%i
  21.         )

  22. )

  23. rem 查找文件目录
  24. del filelist.txt
  25. rem 找到的文件目录
  26. del findfile.txt
  27. echo ************************************
  28. echo copy file success: !copyCount!
  29. pause
复制代码
 楼主| 发表于 2017-12-25 14:09:43 | 显示全部楼层
回复 2# yhcfsr


    1.txt的内容大致如下:

待查找的目录内容如下:

报错信息如下:
发表于 2017-12-25 19:02:20 | 显示全部楼层
回复 3# braver0905


    没什么问题啊,提示找不到两个符合要求的文件,那就是源目录里本身就没有吧
 楼主| 发表于 2017-12-26 15:13:07 | 显示全部楼层
回复 4# yhcfsr


    好的!我再检查检查。谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 23:14 , Processed in 0.017910 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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