Board logo

标题: [文本处理] BAT怎样批量复制文件并重命名? [打印本页]

作者: wodekao    时间: 2018-9-3 16:08     标题: BAT怎样批量复制文件并重命名?

本帖最后由 wodekao 于 2018-9-6 17:29 编辑
  1. @echo off & title
  2. cd /d %~dp0
  3. setlocal enabledelayedexpansion
  4. for /f "delims=" %%a in (1.txt) do (
  5.     set "Est="
  6.     for /f "delims=" %%b in ('dir /a-d/s/b "1\*%%~a*"') do (
  7.         copy "%%~b" "2\*%%~a*"
  8.         set Est=1
  9.     )
  10.     if not defined Est >>2.txt echo %%a
  11. )
  12. pause
复制代码
以上代码可以实现指定文件批量复制到指定文件夹之内,但是无法实现同一文件的二次复制(因为会被覆盖掉),求改进!

例如

1.txt  里面有

1.jpg
1.jpg
1.jpg
1.jpg
2.jpg
3.jpg

1\ 目录下有 1.jpg 2.jpg 3.jpg

求复制后

2\目录下有 1.jpg   1 (1).jpg   1 (2).jpg  1 (3).jpg  2.jpg  3.jpg
作者: Batcher    时间: 2018-9-3 16:15

参考:
http://bbs.bathome.net/thread-11423-1-1.html#pid72681
http://bbs.bathome.net/thread-9355-1-1.html#pid60783
作者: yhcfsr    时间: 2018-9-3 17:01

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (1.txt) do (
  3.     for /f "delims=" %%b in ('dir /a-d/s/b "1\*%%~a*"') do (
  4. if not defined %%a (
  5. set "%%a=%%a"
  6. set "_%%a="
  7. set "name=%%~nxb"
  8. ) else (
  9. set/a "_%%a+=1"
  10. set "name=%%~nb(!_%%a!)%%~xb"
  11. )
  12. copy "%%b" "2\!name!"
  13. )
  14. )
  15. pause
复制代码

作者: wodekao    时间: 2018-9-3 17:16

回复 3# yhcfsr
非常好的回答!!!




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