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

[文件操作] 求助批处理如何根据txt列表模糊查找源文件夹目录然后移动到带源路径的新目标目录?

[复制链接]
发表于 2023-1-16 23:30:56 | 显示全部楼层 |阅读模式
各位大佬
请问一下如何根据txt文件内的列表模糊查找源文件夹目录然后移动到带源路径的新目标目录
如:已有一个  列表.txt文件  里面有

nihao.txt
wenjian  
ceshi.jpg

rem 其中wenjian是不带后缀的 可以复制任何后缀的出去

源目录结构是下面这样的:
源目录\A\B\nihao.txt
源目录\A\C\wenjian.txt
源目录\A\C\wenjian.jpg
源目录\A\D\ceshi.jpg

源目录的复制到目标目录后是这样的:
目标目录\A\B\nihao.txt
目标目录\A\C\wenjian.txt
目标目录\A\C\wenjian.jpg
目标目录\A\D\ceshi.jpg

小弟在跪谢过各位大佬!!
发表于 2023-1-17 10:15:56 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2023-1-17 10:57 编辑

回复 1# fang139842
1.批处理文件与文件名列表文件list.txt放在同一目录;
2.假设源文件目录为:D:\abc;目标目录为:D:\123;
3.批处理文件与列表文件均存为ANSI编码:
  1. @echo off
  2. set SourceFolder=D:\abc
  3. set TargetFolder=D:\123
  4. setlocal enabledelayedexpansion
  5. for /f "delims=" %%a in (list.txt) do (
  6.     cd /d "%SourceFolder%"
  7.     if "%%~xa"=="" (
  8.         for /f "delims=" %%i in ('dir /b /s /a-d "%%a.*"') do (
  9.             set str=%%~dpi
  10.             md "%TargetFolder%!str:%cd%=!">nul 2>nul
  11.             copy "%%i" "%TargetFolder%!str:%cd%=!">nul 2>nul
  12.     ) else (
  13.         for /f "delims=" %%i in ('dir /b /s /a-d "%%a"') do (
  14.             set str=%%~dpi
  15.             md "%TargetFolder%!str:%cd%=!">nul 2>nul
  16.             copy "%%i" "%TargetFolder%!str:%cd%=!">nul 2>nul
  17.         )
  18.     )
  19. )
  20. pause
复制代码
代码未经测试。
发表于 2023-1-17 10:55:50 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2023-1-17 10:56 编辑

简化以上代码:
  1. @echo off
  2. set SourceFolder=D:\abc
  3. set TargetFolder=D:\123
  4. setlocal enabledelayedexpansion
  5. for /f "delims=" %%a in (list.txt) do (
  6.     cd /d "%SourceFolder%"
  7.     if "%%~xa"=="" (
  8.         set "str=%%a.*"
  9.     ) else (
  10.         set "str=%%a"
  11.     )
  12.     for /f "delims=" %%i in ('dir /b /s /a-d "!str!"') do (
  13.         set str=%%~dpi
  14.         md "%TargetFolder%!str:%cd%=!">nul 2>nul
  15.         copy "%%i" "%TargetFolder%!str:%cd%=!">nul 2>nul
  16.     )
  17. )
  18. pause
复制代码
 楼主| 发表于 2023-1-17 13:02:54 | 显示全部楼层
回复 3# qixiaobin0715


    大哥威武 大哥牛逼  对大哥敬仰佩服的五体投地
发表于 2023-1-18 20:33:48 | 显示全部楼层
xcopy可以
  1. @echo off & setlocal enabledelayedexpansion
  2. rem 保存为ANSI格式
  3. set "source=d:\123"
  4. set "destination=d:\abc"
  5. for /f "delims=" %%a in (list.txt) do (
  6.      if "%%~xa"=="" ( set "str=%%a.*" )  else  set "str=%%a"
  7.      for /f "delims=" %%i in ('dir /b /s /a-d "%source%!str!"') do (
  8.            set "ph=%%~dpi"
  9.            xcopy /y "%%i" "%destination%!ph:*%source%=!" >nul
  10.      )
  11. )
  12. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-19 06:15 , Processed in 0.065860 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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