批处理 重命名同名文件

2024-11-13 08:03:25
推荐回答(3个)
回答1:

@echo off
set #=q&set/ax=0x53b7e0b4
title Any question +%#%%#% %x%
mode con lines=5000
cd /d "%~dp0"
set "新目录=D:\图片"
if not exist "%新目录%" md "%新目录%"
for /f "delims=" %%a in ('dir /a-d/b^|findstr /i "\.png$ \.jpg$ \.gif$"') do (
    if not exist 卜清"%新目录%\%%~nxa" (
   型弊型     echo;"%%a" --^> "%新目录%\%%~nxa"
     卜猜   move "%%a" "%新目录%\%%~nxa"
    ) else call :loop "%%a"
)
echo;Any question +%#%%#% %x%
pause&exit
:loop
set n=0
:check
set /a n+=1
if exist "%新目录%\%~n1_%n%%~x1" (goto check)
echo;"%~1" --^> "%新目录%\%~n1_%n%%~x1"
move "%~1" "%新目录%\%~n1_%n%%~x1"
exit /b

回答2:

@echo off&setlocal enabledelayedexpansion
set "target=D:\图片"
for %%a in (*.jpg *.png *.gif) do (
set "newname=%%a"
if 早烂禅exist "%target%\%%a" call :crnewname "%%a"陆尘
move "%%~a" "%target%\!newname!"
)
:goto eof
:crnewname
set 历耐n=1000
:loop
set /a n+=1
set  suffix=%n:~1%
set "newname=%~n1_%suffix%%~x1"
if exist "%target%\%newname%" goto :loop

回答3:

@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)