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

发布网友

我来回答

2个回答

热心网友

批量删去文件名中的特定文字或字符:

步骤1,安装软件后打开,点击【添加文件】按钮,将需要修改名称的文件全部添加到软件中,也可以通过将文件拖动到软件上的方式进行添加。

步骤2,接下来就是对软件进行设置的环节,如下图所示:命名方式选择“替换”;查找内容输入需要删除的文字或字符;替换内容什么都不用填写,留空。这时候我们在右边可以预览到新文件名已经删除了相同的文字。

步骤3,然后点击【开始重命名】红色按钮,启动软件程序。稍等片刻当软件提示“重命名成功”,说明软件完成批量删除文件名中相同文字的操作。

步骤4,最后检查这些文件,通过案例对比可以看出,新的文件名中完全删除了相同的文字

热心网友

@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

来自:求助得到的回答

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com