批处理,复制文件,如果有重名,则自动重命名

写一个批处理,把c:\123\文件夹下所有文件复制到d:\123\文件夹下,如果有重名文件,则自动加上(1)进行区分。如:项目通知书.jpg和项目通知书(2).jpg。
谢谢!
可能会涉及文件后缀名,可以把标记放在文件名前面。如:(1)项目通知书.jpg和项目通知书.jpg

第1个回答  推荐于2016-08-06
@echo off
setlocal enabledelayedexpansion
if not exist d:\123 md d:\123
pushd c:\123
for /f "tokens=*" %%i in ('dir/s/b') do (
if exist "d:\123\%%~nxi" (
for /f %%j in ('dir/b "d:\123\%%~ni*%%~xi"^|find /c /v ".*"') do set /a n=%%j + 1
copy "%%i" "d:\123\%%~ni!n!%%~xi") else copy "%%i" d:\123)追问

如果复制路径有空格,如C:\Program Files (x86)\VMware\VMware VIX\doc\errors,就无法运行了。加引号也没有用。。

本回答被提问者和网友采纳
第2个回答  2012-12-10
顶一楼,非常专业!