Board logo

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

作者: braver0905    时间: 2017-12-25 10:52     标题: 批量查找指定文件夹里的文件并复制,代码救助!

录音文件夹的检索,并复制出检索的结果。

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
作者: yhcfsr    时间: 2017-12-25 12:08

本帖最后由 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
复制代码

作者: braver0905    时间: 2017-12-25 14:09

回复 2# yhcfsr


    1.txt的内容大致如下:

待查找的目录内容如下:

报错信息如下:
作者: yhcfsr    时间: 2017-12-25 19:02

回复 3# braver0905


    没什么问题啊,提示找不到两个符合要求的文件,那就是源目录里本身就没有吧
作者: braver0905    时间: 2017-12-26 15:13

回复 4# yhcfsr


    好的!我再检查检查。谢谢!




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