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

[文件操作] 批处理怎样递归查找所有png复制到一个文件夹内,同名的递增重命名

[复制链接]
发表于 2021-5-4 16:17:01 | 显示全部楼层 |阅读模式
  1. pushd D:\phpstudy_pro\WWW\xdzmb
  2.         for /r %%a in (*.png) do (
  3.                 IF EXIST D:\phpstudy_pro\WWW\fff\%%~nxa (
  4.                         COPY %%a%%^(1) "D:\phpstudy_pro\WWW\fff"
  5.                 ) else (
  6.                         COPY %%a "D:\phpstudy_pro\WWW\fff"
  7.                 )
  8.         )
  9. popd
  10. pause
复制代码
大概就是这个意思  这怎么改啊  在线等
发表于 2021-5-5 08:58:57 | 显示全部楼层

  1. @echo off &pushd D:\phpstudy_pro\WWW\xdzmb
  2. for /r %%i in (*.png) do (
  3.     set "strName=%%~nxi" & set "n="
  4.     call :CP "%%i"
  5. )
  6. pause & exit

  7. :CP
  8. if not exist "D:\phpstudy_pro\WWW\fff\%strName%" copy "%~1" "D:\phpstudy_pro\WWW\fff\%strName%" & goto :EOF
  9. if exist "D:\phpstudy_pro\WWW\fff\%strName%" set /a n+=1
  10. set "strName=%~n1(%n%)%~x1"
  11. goto :CP
复制代码
发表于 2021-5-6 12:30:25 | 显示全部楼层
本帖最后由 cutebe 于 2021-5-6 12:46 编辑
  1. ::复制所有(包含子目录中)的png到目标目录,重名则添加/修改数字后缀。
  2. @echo off
  3. setlocal enableDelayedExpansion

  4. set "sPath=D:\phpstudy_pro\WWW\xdzmb"
  5. set "tPath=D:\phpstudy_pro\WWW\fff"

  6. pushd %sPath%
  7. for /f "delims=" %%i in ('dir/s/b/a-d *.png')do (
  8.         if exist "%tPath%\%%~nxi" (
  9.                 call :pngNum pngName "%%i"
  10.                 copy "%%i" "%tPath%\!pngName!%%~xi"
  11.         )else copy "%%i" "%tPath%"
  12. )
  13. popd
  14. goto :eof
  15. ::====完====

  16. :pngNum pngName pngPath
  17. setlocal
  18. pushd %~dp2
  19. set/am=1,@2=1
  20. for /l %%n in (0 1 9)do set _%%n=%%n
  21. set "strNum=%~n2"
  22. :numlp        ::取末尾数字
  23. if defined _%strNum:~-1% (
  24.         set/aLen+=1,m*=10
  25.         set n=%strNum:~-1%%n%
  26.         set strNum=%strNum:~,-1%
  27.         goto :numlp
  28. )
  29. if "%Len%"=="" set/a num1=Len=1&goto :nend
  30. :nnext
  31. set/an1=1%n%+1
  32. set/ah=n1/m
  33. set num1=!@%h%!!n1:~-%Len%!
  34. if "%h%"==2 set/aLen+=1,m*=10
  35. :nend
  36. set "fName=%strNum%%num1%"
  37. if exist "%tPath%\%fName%%~x2" set n=%num1%&goto :nnext
  38. popd
  39. endlocal&set "%1=%fName%"
  40. goto :eof
复制代码
发表于 2021-5-6 17:41:54 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-5-8 17:05 编辑

利用以前写的代码进行修改,未经测试
  1. @echo off
  2. set path1=D:\phpstudy_pro\WWW\xdzmb
  3. set path2=D:\phpstudy_pro\WWW\fff
  4. setlocal enabledelayedexpansion
  5. for /r %path1% %%a in (*.png) do (
  6.     if not exist "%path2%\%%~nxa" (copy "%%a" "%path2%") else (
  7.         if not exist "%path2%\%%~na (2)%%~xa" (copy "%%a" "%path2%\%%~na (2)%%~xa") else (
  8.             set n=2
  9.             for /f "delims=" %%b in ('dir /b /a-d %path2%\*^|findstr /r /be /c:"%%~na ([0-9][0-9]*)%%~xa"') do (
  10.                 set "str=%%~nb"
  11.                 set "m=!str:%%~na (=!"
  12.                 set "m=!m:)=!"
  13.                 if !m! gtr !n! set /a n=m
  14.             )
  15.             set /a n+=1
  16.             copy "%%a" "%path2%\%%~na (!n!)%%~xa"
  17.         )
  18.     )
  19. )
  20. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 13:11 , Processed in 0.016534 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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