批量重命名一个文件夹下的所有文件

需求:一个文件夹里面的长文件名需要改名,只保留文件名的前20位,文件扩展名保留原jpg格式。

一.更名脚本:

@echo off
setlocal enabledelayedexpansion

rem 设置要重命名的文件夹路径
set "folder=C:\test"

rem 进入指定文件夹
cd /d "%folder%"

rem 遍历文件夹中的所有文件
for %%f in (*) do (
    rem 获取文件名和扩展名
    set "filename=%%~nf"
    set "extension=%%~xf"
    
    rem 获取新的文件名(前10位)
    set "newname=!filename:~0,10!%%extension%%"
    
    rem 重命名文件
    ren "%%f" "!newname!"
)

endlocal

二.执行结果失败

但是执行修改修改不成功:

1.文件排除:开始使用  for %%f in (*) ,结果把所有非jpg格式的都修改掉了,改成 for %%f in (*.jpg)

2.扩展名获取不到:开始用%%~xa 和 %%~na都无法获取,后来使用 set "extension=%%~xf"才搞定。两者区别:
%%~xa:用于获取变量 %%a 的文件扩展名。这里的 x 表示扩展名,例如如果 %%a 是 file.txt,那么 %%~xa 将返回 .txt。

%%~na %%~xf:这个组合则是分开获取文件的名称和扩展名。
%%~na:获取变量 %%a 的文件名(不包括扩展名)。
%%~xf:获取变量 %%a 的扩展名(包括点)

三.成功运行的脚本:

@echo off
setlocal enabledelayedexpansion

rem 设置要重命名的文件夹路径
set "folder=C:\test"

rem 进入指定文件夹
cd /d "%folder%"

rem 遍历文件夹中的所有文件
for %%f in (*.jpg) do (
    rem 获取文件名和扩展名
    set "filename=%%~nf"
    set "extension=%%~xf"
    
    rem 获取新的文件名(前10位)
    set "newname=!filename:~0,20!!extension!"
    
    rem 重命名文件
    ren "%%f" "!newname!"
)

endlocal

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值