[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 复制文件时文件名(文件夹名)相同则重命名的批处理怎么写?

我要复制一个文件夹里面的文件及子文件夹到另外一个文件夹,如果目标文件夹里面现有的文件(或文件夹)名与源文件夹中的相同,则将源文件夹中的文件(文件夹)后面加个a(或者其他什么符号)再复制到目标文件夹,比如将“E:\Temp”里面的文件夹“111”,和文本文档“222.txt”复制到“D:\TTT”,如果D:\TTT里面已经有111和222.txt,则重命名为111a和222a.txt,从而不会覆盖掉D:\TTT里面已经有111和222.txt,该怎么写bat呢,能实现吗?

如果目标文件夹中如果既有111和222.txt,又有111a和222a.txt,咋办?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

如果可以实现,就应该是111a和222a.txt以及111aa和222aa.txt

TOP

难道不能实现这个功能?

TOP

回复 3楼 的帖子

如果目标文件夹中如果既有111和222.txt,又有111a和222a.txt,又有111aa和222aa.txt,一直到最后不知道有多少个a,咋办?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

也许这是个问题。主要目的是防止覆盖掉目标文件夹下的文件及文件夹,有没有什么办法?

TOP

防止文件名重复可以用加数字的办法 如aaa 则 aaa_1 aaa_2
现在问题是如果复制 e:\tem 到 d:\111 但已经有tem 了,则改名为: d:\111\tem_1 那么它里面的文件也要一起改名吗?
技术问题请到论坛发帖求助!

TOP

如果改了文件夹名字,里面的文件则不用改了,不同的文件夹名不会覆盖

TOP

未测试。。。
:
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p yml=输入源文件夹名完整路径
  3. set /p ml=输入目标文件夹名完整路径
  4. for /f "delims=" %%a in ('dir/ad "%yml%"') do (
  5.    set "wjj="%%~nxa"&set "hou="
  6.    if exist "%ml%\!wjj!\" call :loop "%%~nxa"
  7.    xcopy /e /h /k "%yml%" "%ml%\!wjj!\"
  8. )
  9. for /f "delims=" %%a in ('dir/b/a-d "%yml%\*.*"') do (
  10.    set "hou=%%~xa"
  11.    if exist "%ml%\%%~nxa" call :loop "%%~na"
  12.    copy /y "%yml%\%%~nxa" "%ml%\!wjj!"
  13. )
  14. pause&exit
  15. :loop
  16. set /a n+=1
  17. if exist "%ml%\%~1_%n%%hou%\" goto loop
  18. set "wjj=%~1_%n%"
  19. set /a n=0
  20. goto :EOF
复制代码
技术问题请到论坛发帖求助!

TOP

测试了,不行,出了一长串“分析错误”,和一长串“已复制     一个文件”但实际上什么也没复制过去

TOP

返回列表