批量删除文件夹内文件名指定位置后的字符
批量重命名文件:保留指定长度前缀
以下是不同操作系统下,批量截取文件名指定长度前缀、删除后续字符的实用方案:
Windows 环境
方法1:命令提示符(CMD)
创建批处理文件(比如rename.bat),放入目标文件夹后运行,修改数字即可切换保留长度:
@echo off setlocal enabledelayedexpansion :: 替换数字为你需要保留的字符长度(如15/17) set "keep_length=15" for %%f in (*.*) do ( set "filename=%%~nf" set "newname=!filename:~0,%keep_length%!" ren "%%f" "!newname!%%~xf" )
方法2:PowerShell
打开PowerShell进入目标文件夹,执行以下命令(修改数字调整保留长度):
# 保留前15个字符,改成17即可对应需求2 Get-ChildItem | Rename-Item -NewName { $_.BaseName.Substring(0,15) + $_.Extension }
Linux/macOS 环境
方法1:Bash 循环脚本
在终端进入目标文件夹,执行以下命令(替换数字调整保留长度):
# 替换数字为需要保留的字符长度 keep_length=15 for file in *; do if [ -f "$file" ]; then # 拆分文件名和后缀 base="${file%.*}" ext="${file##*.}" # 截取前缀并拼接后缀 new_base="${base:0:$keep_length}" mv "$file" "${new_base}.${ext}" fi done
方法2:Perl 版 rename(Linux 常用)
如果系统自带Perl版rename(Debian/Ubuntu等默认),可直接用:
# 保留前15个字符,修改数字即可切换长度 rename 'my ($base, $ext) = split /\./, $_, 2; $base = substr($base, 0, 15); $_ = "$base.$ext"' *
注意事项
- 操作前务必备份文件,避免重名或误操作导致数据丢失
- 如果存在截取后重名的文件,脚本会报错,需手动处理冲突
- 确保目标文件夹内只有需要重命名的文件,避免误改系统文件
内容的提问来源于stack exchange,提问作者Pandu C
相关产品推荐
相关产品推荐

