windows批处理批量更改文件名称

本文介绍如何通过批处理脚本解决视频文件名按数字顺序播放问题,提供了一种针对不同长度文件名和编码的解决方案,包括设置延迟扩展变量、判断文件名格式并进行相应的重命名操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载的视频文件需要放到投影仪上给孩子看,但是文件名称总是会按1、2……10、11这种数字规律作为开头,在投影仪上它的播放顺序就会变成1、10、11、12……2、20、21这样。

所以需要把文件前边的数字给他去掉

去掉之前它是这样排列的

 修改步骤记录如下:

1. 在该目录下新建txt文件rename.txt

2. 在txt文件中写入批处理命令

setlocal enabledelayedexpansion
for %%F in (*) do (
  set "FN=%%F"
  set "FN=!FN:~3!"
  ren "%%F" "!FN!"
)
goto :eof

 3. 修改文件扩展名,将txt改成bat,然后双击执行批处理。

这样它会将该文件夹下的所有文件名称去掉前3位,只保留后边的部分,连rename.bat文件也是会变成ame.bat

(关于FN:~3,这里是因为文件名称的字符位置是从0开始算的,前边三个字符位置分别是0、1、2,所以这里是从第三位开始取值,如果你需要删除的字符更多,直接更改这个数字就好)

上边是简单粗暴的方法,那么如果你的文件编码已经超过了100个,那么就不适用了,因为100开头的文件要删除“100”和“.”四个字符,如果还按上边的执行,那么100.开头的文件删完就变成.开头了。

所以加个if判断,判断文件名前两位是数字第三位是.才做这个重命名操作

setlocal enabledelayedexpansion
for %%F in (*) do (
    set "FN=%%F"
    call :IsNumber "!FN!"
    if defined Number if "!FN:~2,1!"=="." (
    set "FN=!FN:~3!"
    ren "%%F" "!FN!"
    )
)
goto :eof
:IsDigit
set Digit=
if "%~1" GEQ "0" if "%~1" LEQ "9" set Digit=1
goto :eof
:IsNumber
setlocal
set "File=%~1"
set Number=
call :IsDigit "%File:~0,1%"
set Digit1=%Digit%
call :IsDigit "%File:~1,1%"
set Digit2=%Digit%
if "%Digit1%%Digit2%"=="11" set Number=1
endlocal & set Number=%Number%
goto :eof

执行完的结果是这样的

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值