快捷导航

云服务器Windows批量修改文件名bat代码

[复制链接]
查看: 108|回复: 0
发表于 2023-6-29 15:29:27 | 显示全部楼层 |阅读模式
有时候文件名很长,文件又比较多,一个个修改起来很费劲,有没有好的方式推荐,当然有了,我们可以选择chb renamer软件,也可以用bat批处理来处理修改文件名!第一种软件方式(chb renamer)我们之前有做专门介绍,今天不在赘述,我们今天主要说下bat批处理方式来实现Windows下如何批量修改文件名!@echo off

title 批量删除文件名部分字符串

echo 本批处理仅处理一级目录,不处理二级目录

:MM

echo -----------------------------------------------------------------------

echo. & echo 【1】从第n位开始保留m位,其余字符串删除,请输入1

echo. & echo 【2】从第n位开始删除m位,其余字符串保留,请输入2

echo. & echo 【3】删除后面m位,前面字符串保留,请输入3

echo. & echo 【4】删除前面n位,后面字符串保留,请输入4

echo. & echo 【5】删除文件名特定字符之间的字符串,特定字符也一起删除,请输入5

echo. & echo 【6】仅保留特定字符之间的字符串作为文件名,其它字符删除,请输入6

echo. & echo 【7】仅保留特定字符和特定字符之间的字符串作为文件名,其它字符删除,请输入7

echo -----------------------------------------------------------------------

echo. & set /p "stt=请根据需要的功能,输入相应的标号:"

if %stt% equ 1 goto AA

if %stt% equ 2 goto BB

if %stt% equ 3 goto CC

if %stt% equ 4 goto DD

if %stt% equ 5 goto EE

if %stt% equ 6 goto FF

if %stt% equ 7 goto GG

:AA

echo. & echo 您选择的是:从第n位开始保留m位,其余字符串删除

set "str=%~dp0"

echo. & set /p "str=请输入目录(直接回车,默认批处理所在目录):"

echo. & set /p "tp=请输入文件类型(例如文本类型:*.txt):"

cd /d "%str%"

echo. & echo 下面输入的数字必须是正数,否则可能出错

echo. & set /p "n=请输入从第几个字符开始:"

set /a "n=%n%-1"

echo. & set /p "m=请输入要保留的字符个数:"

for /f "delims=" %%i in ('dir /b %tp%') do (

setlocal enabledelayedexpansion

set "var=%%~ni"

set "vam=%%~xi"

set "var1=!var:~%n%,%m%!

ren "%%i" "!var1!!vam!"

setlocal disabledelayedexpansion

)

echo. & echo 已完成。。。。

goto MM

:BB

echo. & echo 您选择的是:从第n位开始删除m位,其余字符串保留

set "str=%~dp0"

echo. & set /p "str=请输入目录(直接回车,默认批处理所在目录):"

echo. & set /p "tp=请输入文件类型(例如文本类型:*.txt):"

cd /d "%str%"

echo. & echo 下面输入的数字必须是正数,否则可能出错

echo. & set /p "n=请输入从第几个字符开始删除:"

set /a "n=%n%-1"

echo. & set /p "m=请输入要删除的字符个数:"

set /a "mm=%n%+%m%"

for /f "delims=" %%i in ('dir /b %tp%') do (

setlocal enabledelayedexpansion

set "var=%%~ni"

set "vam=%%~xi"

set "var1=!var:~,%n%!

set "var2=!var:~%mm%!

ren "%%i" "!var1!!var2!!vam!"

setlocal disabledelayedexpansion

)

echo. & echo 已完成。。。。

goto MM

:CC

echo. & echo 您选择的是:删除后面m位,前面字符串保留

set "str=%~dp0"

echo. & set /p "str=请输入目录(直接回车,默认批处理所在目录):"

echo. & set /p "tp=请输入文件类型(例如文本类型:*.txt):"

cd /d "%str%"

echo. & echo 下面输入的数字必须是正数,否则可能出错

echo. & set /p "m=删除后面的几位,请输入要删除的字符个数:"

for /f "delims=" %%i in ('dir /b %tp%') do (

setlocal enabledelayedexpansion

set "var=%%~ni"

set "vam=%%~xi"

set "var1=!var:~,-%m%!

ren "%%i" "!var1!!vam!"

setlocal disabledelayedexpansion

)

echo. & echo 已完成。。。。

goto MM

D

echo. & echo 您选择的是:删除前面n位,后面字符串保留

set "str=%~dp0"

echo. & set /p "str=请输入目录(直接回车,默认批处理所在目录):"

echo. & set /p "tp=请输入文件类型(例如文本类型:*.txt):"

cd /d "%str%"

echo. & echo 下面输入的数字必须是正数,否则可能出错

echo. & set /p "n=删除前面的几位,请输入要删除的字符个数:"

for /f "delims=" %%i in ('dir /b %tp%') do (

setlocal enabledelayedexpansion

set "var=%%~ni"

set "vam=%%~xi"

set "var1=!var:~%n%!

ren "%%i" "!var1!!vam!"

setlocal disabledelayedexpansion

)

echo. & echo 已完成。。。。

goto MM

:EE

echo. & echo 您选择的是:批量删除文件名特定字符之间的字符串(包括特定字符也一起删除)

echo. & echo 仅处理一级目录,不处理二级目录

set str=%~dp0

echo. & set /p "str=请输入文件所在路径,直接回车则默认批处理所在目录:"

echo. & set /p "lap=请输入文件类型(例如:*.txt):"

echo. & set /p "str1=请输入开始的字符:"

echo. & set /p "str2=请输入结束的字符:"

cd /d %str%

for /f "delims=" %%a in ('dir /b %lap%') do (

set stn=%%~na

setlocal enabledelayedexpansion

for /f "tokens=1,3 delims=%str1%%str2%" %%i in ("!stn!") do (

set "tm1=%%i"

set "tm2=%%j"

if "!tm1!!tm2!" EQU "" (

echo. & echo 您输入的开始字符是字符串的第一个字符,输入的结束字符是字符串的最后一个字符,请不要这样输入

)

if "!tm1!!tm2!" NEQ "!stn!" (

ren "%%a" "!tm1!!tm2!%%~xa"

)

)

endlocal

)

echo. & echo 已完成。。。。

goto MM

:FF

echo. & echo 您选择的是:批量修改文件名,仅保留特定字符之间的字符串为名字,其它字符串删除,特定字符也一并删除

echo. & echo 本批处理仅处理一级目录,不处理二级目录

set str=%~dp0

echo. & set /p "str=请输入文件所在路径,直接回车则默认批处理所在目录:"

echo. & set /p "lap=请输入文件类型(例如:*.txt):"

echo. & set /p "str1=请输入开始的字符:"

echo. & set /p "str2=请输入结束的字符:"

cd /d %str%

for /f "delims=" %%a in ('dir /b %lap%') do (

set stm=%%~na

setlocal enabledelayedexpansion

for /f "tokens=2 delims=%str1%%str2%" %%i in ("!stm!") do (

if "%%i" EQU "" (

echo. & echo 您输入的开始字符和结束字符紧挨着,或开始字符与结束字符相同,请重新输入

)

if "%%i" NEQ "!stm!" (

ren "%%a" "%%i%%~xa"

)

)

endlocal

)

echo. & echo 已完成。。。。

goto MM

:GG

echo. & echo 您选择的是:批量修改文件名,仅保留特定字符之间的字符串为名字(特定字符也保留),其它字符串删除

echo. & echo 本批处理仅处理一级目录,不处理二级目录

set str=%~dp0

echo. & set /p "str=请输入文件所在路径,直接回车则默认批处理所在目录:"

echo. & set /p "lap=请输入文件类型(例如:*.txt):"

echo. & set /p "str1=请输入开始的字符:"

echo. & set /p "str2=请输入结束的字符:"

cd /d %str%

for /f "delims=" %%a in ('dir /b %lap%') do (

set stm=%%~na

setlocal enabledelayedexpansion

for /f "tokens=2 delims=%str1%%str2%" %%i in ("!stm!") do (

if "%%i" EQU "" (

echo. & echo 您输入的开始字符和结束字符紧挨着,或开始字符与结束字符相同,请重新输入

)

if "%%i" NEQ "!stm!" (

ren "%%a" "%str1%%%i%str2%%%~xa"

)

)

endlocal

)

echo. & echo 已完成。。。。

goto MM以上代码保存为ANSI编码的bat后缀名文件,管理员身份运行!有兴趣的可以试试!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

精彩推荐

尚云驿站

  • 投诉建议:350467567@qq.com
  • 软文投稿:350467567@qq.com
  • 友情链接:350467567@qq.com

云服务支持

精彩文章,快速检索

Copyright 尚云驿站  Powered by©  技术支持:飛    ( 闽ICP备2025116718号-15 )