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

[文件操作] 求助批处理如何根据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: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
复制代码
代码未经测试。

TOP

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

TOP

回复 3# qixiaobin0715


    大哥威武 大哥牛逼  对大哥敬仰佩服的五体投地

TOP

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

TOP

返回列表