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

[文件操作] BAT如何批量复制当前目录(包括子目录)下的特定类型文件到一个文件夹里?

[复制链接]
发表于 2013-11-20 14:59:45 | 显示全部楼层 |阅读模式
求代码:批量复制当前目录(包括子目录)下的特定类型文件到一个文件夹里,重名自动修改,并生成导出清单txt

【复制出来的重名文件】自动在后面添加数字,如:“文件名”、“文件名1”、“文件名2”等等。

如果可以,希望复制的重名文件自动改名的同时源文件也同时修改,如:

【源文件】                         【复制出时改名】                          【同时修改源文件名】

F:\上报制卡\1\文件名           F:\上报制卡\备份\文件名                 F:\上报制卡\1\文件名

F:\上报制卡\2\文件名           F:\上报制卡\备份\文件名1               F:\上报制卡\2\文件名1

F:\上报制卡\3\文件名           F:\上报制卡\备份\文件名2               F:\上报制卡\3\文件名2

最后生成复制出的文件路径、改名清单txt
发表于 2013-11-20 15:19:03 | 显示全部楼层
特定类型是什么类型?
 楼主| 发表于 2013-11-20 17:22:12 | 显示全部楼层
回复 1# 86223125


    比如jpg txt
发表于 2013-11-22 10:45:04 | 显示全部楼层
本帖最后由 changedirectory 于 2013-11-22 21:51 编辑

本人是新手,请高手指点,谢谢!

  1. @echo off&setlocal enabledelayedexpansion
  2. attrib +s %~f0"
  3. for /r %%a in (*) do (
  4.    set str=%%~dpa&& set str=!str:~-2,1!
  5.    set /a num=!str!-1
  6.    if !str!==r (
  7.      echo off
  8.    ) else (
  9.      if !num!==0 (
  10.        ren "%%a" "%%~nxa"
  11.      ) else (
  12.        ren "%%a" "%%~na!num!%%~xa"
  13.      )
  14.    )
  15. )
  16. for /r %%b in (*) do (
  17.    md backup&xcopy "%%b" backup >nul 2>nul
  18. )
  19. pause
复制代码
发表于 2013-11-22 12:52:06 | 显示全部楼层
  1. @echo off
  2. set "fph=f:\test\备份"
  3. set "ext=*.txt *.bat"
  4. setlocal enabledelayedexpansion
  5. if not exist "%fph%" md "%fph%"
  6. (for /f "delims=" %%i in ('dir /b/s/a-d %ext%') do (
  7.     if not exist "%fph%\%%~nxi" (
  8.        copy "%%i" "%fph%\%%~nxi" >nul 2>nul
  9.        echo "%%i" ==^> "%fph%\%%~nxi"
  10.     ) else (
  11.             set n=0
  12.             call:lp "%%~ni" "%%~xi" "%%~dpi"
  13.             copy "%%i" "%fph%\%%~ni!n!%%~xi" >nul 2>nul
  14.             ren "%%i" "%%~ni!n!%%~xi"
  15.             echo "%%~dpi%%~ni!n!%%~xi" ==^> "%fph%\%%~ni!n!%%~xi
  16.            )
  17. ))>清单.txt
  18. pause&exit
  19. :lp
  20. set /a n+=1
  21. if exist "%fph%\%~1%n%%~2" goto lp
  22. if exist "%~3\%~1%n%%~2" goto lp
  23. goto:eof
复制代码
发表于 2013-11-22 13:33:24 | 显示全部楼层
假设相同文件名的重复个数不超过20
  1. @echo off
  2. set "SrcDir=F:\上报制卡"
  3. set "DstDir=D:\备份"
  4. for /r "%SrcDir%" %%a in (*.jpg *.txt) do (
  5.     if exist "%DstDir%\%%~nxa" (
  6.         set flag=1
  7.         for /l %%b in (1 1 20) do (
  8.             if defined flag (
  9.                 if not exist "%DstDir%\%%~na%%b%%~xa" (
  10.                     copy "%%a" "%DstDir%\%%~na%%b%%~xa"
  11.                     set "flag="
  12.                     echo,%%a %DstDir%\%%~na%%b%%~xa>>List.txt
  13.                 )
  14.             )
  15.         )
  16.     ) else (
  17.         copy "%%a" "%DstDir%"
  18.         echo,%%a %DstDir%\%%~nxa>>List.txt
  19.     )
  20. )
  21. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 19:53 , Processed in 0.030826 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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