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

[文本处理] BAT怎样批量复制文件并重命名?

[复制链接]
发表于 2018-9-3 16:08:04 | 显示全部楼层 |阅读模式
本帖最后由 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
发表于 2018-9-3 16:15:57 | 显示全部楼层
发表于 2018-9-3 17:01:39 | 显示全部楼层
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
wodekao + 1 乐于助人

查看全部评分

 楼主| 发表于 2018-9-3 17:16:34 | 显示全部楼层
回复 3# yhcfsr
非常好的回答!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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