Board logo

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

作者: 86223125    时间: 2013-11-20 14:59     标题: BAT如何批量复制当前目录(包括子目录)下的特定类型文件到一个文件夹里?

求代码:批量复制当前目录(包括子目录)下的特定类型文件到一个文件夹里,重名自动修改,并生成导出清单txt

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

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

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

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

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

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

最后生成复制出的文件路径、改名清单txt
作者: foxJL    时间: 2013-11-20 15:19

特定类型是什么类型?
作者: 86223125    时间: 2013-11-20 17:22

回复 1# 86223125


    比如jpg txt
作者: changedirectory    时间: 2013-11-22 10:45

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

作者: terse    时间: 2013-11-22 12:52

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

作者: apang    时间: 2013-11-22 13:33

假设相同文件名的重复个数不超过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
复制代码





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