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

返回列表