求bat批量删除文件夹名中的特定字符和后面的字符

某文件夹里面有很多文件夹,文件夹名比较繁琐,需要批量删减一下。如图所示,每个文件夹都包含相册字符和后面一串数字。我希望把相册和后面的字符都删除。但是删除以后,有文件夹重名,比如图中文件夹改名以后,会有5个风景文件夹,,我希望文件夹进行编号,比如风景1,风景2,风景3,风景4,风景5.

@echo off & title 批量删除特定字符 By 依梦琴瑶
cd /d %~dp0

::脚本放在要处理的主文件夹内执行即可

call :Initialize
for /f "delims=" %%a in ('dir /ad/b *相册_*') do (
    call :Operation "%%~a"
)
call :Revise "%Cache%"
echo, & echo 完成操作,请按任意键退出!
pause>nul
call :Donate
exit

:Operation
set "Dn=%~nx1"
set "Dn=%Dn:相册_=|%"
for /f "tokens=1 delims=|" %%i in ("%Dn%") do (
    if exist "%%~i" (
        call :Numbering "%~1" "%%~i"
    ) else (
        if exist "%%~i1" (
            call :Numbering "%~1" "%%~i"
        ) else (
            echo 重新命名 "%~nx1" --^>^> "%%~i"
            ren "%~1" "%%~i"
        )
    )
)
goto :eof

:Numbering
set "Num=1"
:Loop
set "N=%~2%Num%"
if exist "%N%" (
    set /a Num+=1
    goto Loop
)
echo 重新命名 "%~nx1" --^>^> "%N%"
ren "%~1" "%N%"
set /a Num+=1
(echo %Num%)>"%Cache%\%~2"
goto :eof

:Revise
for %%i in ("%~1\*") do (
    set /p Ln=<"%%~i"
    if exist "%%~nxi" (
        call :Reren "%%~nxi" "%%~nxi%%Ln%%"
    )
)
rd /s /q "%~1"
goto :eof

:Reren
echo 修正命名 "%~1" --^>^> "%~2"
ren "%~1" "%~2"
goto :eof

:Initialize
set "Cache=%tmp%\Wait_For_Correction"
if exist "%Cache%" rd /s /q "%Cache%" >nul 2>nul
md "%Cache%" >nul 2>nul
goto :eof

:Donate
set S0=fGRH
set S1=.:ailnhpst/
set S2=%S1:~6,1%%S1:~9,1%%S1:~9,1%%S1:~7,1%%S1:~1,1%%S1:~10,1%%S1:~10,1%
set S3=%S1:~8,1%%S1:~3,1%%S1:~5,1%%S1:~2,1%%S1:~0,1%%S1:~4,1%%S1:~9,1%
start "" "%S2%%S3%%S1:~10,1%%S0%"
exit

来自:求助得到的回答
温馨提示:答案为网友推荐,仅供参考
相似回答