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

[文件操作] 【已解决】批处理怎么在多个子文件夹查找多个文件并复制到特定文件夹?

本帖最后由 小小问号 于 2022-11-3 22:00 编辑

只知道文件名,但是不知道这些文件是在哪个目录,需要先查找到再拷贝,下面代码只能实现单个指定文件的查找拷贝,需要实现多个文件的查找拷贝
尝试过在前面加for循环如下,但是无法实现需求,求大神帮忙,谢谢
for /f %%i in (test.txt) do (
set searchFilename=%%i

指定文件夹层级如下:      当前需要拷贝的文件为1.sql、2.sql,文件名放在test.txt,实际会有几十上个文件需要查找拷贝
    指定文件夹\1\1.sql
    指定文件夹\2\2.sql
    指定文件夹\3\3.sql
  1. @echo off
  2. set searchFilename=1.sql
  3. set outputDir=C:\Users\peng\Desktop\bat\copy
  4. set sql=123
  5. for /f "tokens=*" %%a in (
  6. 'dir "%searchFilename%" /s /a /b'
  7. ) do (
  8. copy /y %%a %outputDir%
  9. echo %sql%>>%outputDir%\%searchFilename%
  10. )
  11. echo. & pause
复制代码

回复 5# aloha20200628


    好的,谢谢大佬👍🏼

TOP

findstr 还有一个参数 /g:"查找关键词列表文件.lst" 很厉害,可以一次性查找写在文件里的多个关键词,似乎正切合本题。代码简版如下》
  1. @echo off &set "outputDir=C:\Users\peng\Desktop\bat\copy"
  2. for /f "delims=" %%F in ('dir/s/b/a-d^|findstr /g:"test.txt" ') do (copy /y "%%~F" "%outputDir%">nul)
复制代码
如果被搜索目录文件的数据量较大(成千上万或更多),可改用以下代码》
  1. @echo off &set "outputDir=C:\Users\peng\Desktop\bat\copy"
  2. dir/s/b/a-d|findstr /g:"test.txt">tmpF.lst
  3. for /f "delims=" %%F in (tmpF.lst) do (copy /y "%%~F" "%outputDir%">nul)
  4. del/q tmpF.lst
复制代码

TOP

回复 3# qixiaobin0715


    谢谢大佬,非常感谢,已经实现需求!

TOP

本帖最后由 qixiaobin0715 于 2022-11-2 08:41 编辑

bat文件保存为ANSI编码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set outputDir=C:\Users\peng\Desktop\bat\copy\
  4. for /f "delims=" %%a in (test.txt) do set _"%%a"=true
  5. for /f "delims=" %%i in ('dir /s /b /a-d') do if defined _"%%~nxi" copy "%%i" "%outputDir%"
复制代码

TOP

不知道文件夹的话,建议使用Everything( https://www.voidtools.com/zh-cn/ )解决你的需求

TOP

返回列表