879792799 发表于 2018-9-14 11:45:29

已解决--求批处理实现 复制文件遇到相同文件名自动重命名(增量备份-不覆盖以前的....

本帖最后由 879792799 于 2018-9-14 18:04 编辑

已完美解决----答案在7楼   谢谢junyee大大指教!!!

求助大大们一个批处理!!!

我想实现这样功能

---我拖动文件到批处理上,批处理自动把这个文件复制C盘目录下(备份)
假如c盘已经备份过一次存在相同的文件名 就重命名文件后加-1标志备份到C盘下(不覆盖已经存在文件)

假如我拖动文件1.txt到批处理上C盘生成1.TXT
我再拖动文件1.txt到批处理上C盘生成1-1.TXT
我再再拖动文件1.txt到批处理上C盘生成1-2.TXT
我再再再拖动文件1.txt到批处理上C盘生成1-3.TXT
.。。。。。。。
。。。。
。。
求指教 谢谢大大了!!!!

窄口牛 发表于 2018-9-14 12:53:04

robocopy了解一下

nttwqz 发表于 2018-9-14 13:20:14

窄口牛 发表于 2018-9-14 12:53
robocopy了解一下

robocopy不仅是一个强大的命令,还是一个复杂的命令,一段时间不用就会忘记,好多年前研究的很透彻,现在不看帮助都不会~

江南一根葱 发表于 2018-9-14 13:42:29

第一步好办,后面的,,,
要是不存在1.txt却存在1-1.txt呢

879792799 发表于 2018-9-14 15:38:45

江南一根葱 发表于 2018-9-14 13:42
第一步好办,后面的,,,
要是不存在1.txt却存在1-1.txt呢

不用考虑那么复杂的 个人使用   大大也会批处理??!!

kingshui 发表于 2018-9-14 16:00:37

窄口牛 发表于 2018-9-14 12:53
robocopy了解一下

我喜欢用robocopy来删除很难删除的文件夹之类{:1_186:}
先建一个空的文件夹,直接用robocopy镜像到要删除的文件夹{:1_201:}

junyee 发表于 2018-9-14 16:15:18

本帖最后由 junyee 于 2018-9-14 16:21 编辑


唉.......


@echo off &&setlocal enabledelayedexpansion

set file=%1
set fn=%~n1
set fe=%~x1
set bakDir=R:\TEMP\bak

if exist %bakDir%\%fn%%fe% (
call :copyFileExist
) else (
copy %file% %bakDir%\ /y
)
echo finished.
ping 127.1 -n 2 >NUL
GOTO :EOF

:copyFileExist
set ext=1
:until_no_file
if exist %bakDir%\%fn%-!ext!.%fe% (
set /a ext+=1 >nul
goto :until_no_file
)
copy %file% %bakDir%\%fn%-!ext!.%fe%
goto :EOF

879792799 发表于 2018-9-14 17:00:27

junyee 发表于 2018-9-14 16:15
唉.......

谢谢 大大出手!!!{:2_127:} 我赶紧试试!

879792799 发表于 2018-9-14 17:03:31

本帖最后由 879792799 于 2018-9-14 18:08 编辑

junyee 发表于 2018-9-14 16:15
唉.......

                         谢谢!谢谢搞定啦!! 很满意!很满意!!!
{:2_127:}还是大大最实在,俺们论坛真是藏龙卧虎啊,哈哈!!!!!{:2_127:}

crtrccrtt 发表于 2018-9-15 04:55:31


%bakDir%\%fn%-!ext!%.fe%
修改为
%bakDir%\%fn%-!ext!%fe%

虫五 发表于 2018-11-20 16:09:36

本帖最后由 虫五 于 2018-11-20 16:10 编辑

junyee 发表于 2018-9-14 16:15
唉.......

请问下,如何实现批量复制,覆盖不了的自动重命名旧文件?目前我只能实现覆盖不了的报错,然后手动改名。
页: [1]
查看完整版本: 已解决--求批处理实现 复制文件遇到相同文件名自动重命名(增量备份-不覆盖以前的....