利用bat复制(移动)文件同名不覆盖,且重命名
本文最后更新于 -1 天前,其中的信息可能已经有所发展或是发生改变。

注:将下方代码复制到记事本保存后,重命名保存的记事本格式为bat,如将复制.txt修改为复制.bat后双击运行即可。

bat文件只能放入需要复制(移动)的文件夹中,不能发在其他位置。

复制(移动)文件,同名文件自动覆盖

  • 修改路径C:\Users\Administrator\Desktop\3\all\为你想复制(移动)的目标路径
  • 下列代码为复制文件到目标路径,如果要移动,还需修改下方中copymove
for /f "delims=" %%p in ('dir /b/ad') do copy %%p\*.* C:\Users\Administrator\Desktop\3\all\
pause

复制(移动)文件同名不覆盖且自动重命名

  • 注:该方式会将文件夹下所有文件都复制(移动)到目标文件夹下
  • 将下方代码中C:\Users\Administrator\Desktop\3\all修改为你的目标路径
  • 若有重复文件,将自动重命名,命名格式为:文件名(具体数字).文件扩展名,列:1.txt,1(1).txt,1(2).txt
  • 下方代码为复制,如果要变为移动,需要将copy改为move
@echo off & setlocal enabledelayedexpansion    
if not "%~1"==":" (
    md C:\Users\Administrator\Desktop\3\all
    for /f "tokens=1*delims=/" %%i in ('"%~f0" :^|sort') do (
        if /i "%%i"=="!strName!" (
            set /a n+=1
            move "%%j" "C:\Users\Administrator\Desktop\3\all\%%~ni(!n!)%%~xi"
        ) else (
            set "n="
            move "%%j" C:\Users\Administrator\Desktop\3\all\
        )
        set "strName=%%i"
    )
    pause
) else (
    for /r %%i in (*) do echo %%~nxi/%%i
)
上一篇
下一篇