Board logo

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

作者: fang139842    时间: 2023-1-16 23:30     标题: 求助批处理如何根据txt列表模糊查找源文件夹目录然后移动到带源路径的新目标目录?

各位大佬
请问一下如何根据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

小弟在跪谢过各位大佬!!
作者: qixiaobin0715    时间: 2023-1-17 10:15

本帖最后由 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
复制代码
代码未经测试。
作者: qixiaobin0715    时间: 2023-1-17 10:55

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

作者: fang139842    时间: 2023-1-17 13:02

回复 3# qixiaobin0715


    大哥威武 大哥牛逼  对大哥敬仰佩服的五体投地
作者: terse    时间: 2023-1-18 20:33

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





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