当前位置: 首页 > news >正文

批量修改文件名的Tcl脚本

该脚本的主要功能是对文件的名称进行批量修改。

主要功能写在过程Batch_Rename中,一共有6个参数{Path Name Prefix Suffix Format mode}

mode 功能 Path Name Prefix Suffix Format
0 改名 文件夹路径 新名字 选择需改名文件的类型(.*修改全部文件)
1 改格式 同上 .旧格式.新格式(将旧格式改为新格式)
2 添加前后缀 同上 新前缀 新后缀 选择修改前后缀文件的类型(.*修改全部文件)
3 删除前后缀 同上 删除前缀 删除后缀 选择修改前后缀文件的类型(.*修改全部文件)

脚本代码如下:

# 批量修改文件名脚本
proc Batch_Mkfile {Path Name Format Num} {# 检查输入的Path是否是文件夹、是否存在if {![expr [file isdirectory $Path] && [file exists $Path]]} {puts [format "You should enter correct path or directory:*%s*" $Path]return}# 检查输入的Format是否以"."开头,仅有英文字母组成if {![regexp {^(\.[a-zA-Z]+)$} $Format]} {puts "You should enter correct Format!"return}# 检查创建的文件数目,至少1个if {$Num <= 0} {puts "At least, You should make 1 file!"return}# 如果输入的Path不是以"/"结尾,就补上"/"if {![string equal [string index $Path end] "/"]} {append Path "/"}for {set epoch $Num} {$epoch > 0} {incr epoch -1} {set File [join [list $Path $Name [format "_%03d" $epoch] $Format] ""]set id [open $File a]close $id}
}#######################################################################################
# mode   功能       Path       Name   Prefix   Suffix                  Format                  
#  0     改名     文件夹路径   新名字     ""      ""     选择需改名文件的类型(.*修改全部文件)          
#  1    改格式      同上        ""       ""      ""      .旧格式.新格式(将旧格式改为新格式)
#  2   添加前后缀   同上        ""     新前缀    新后缀  选择修改前后缀文件的类型(.*修改全部文件) 
#  3   删除前后缀   同上        ""    删除前缀  删除后缀  选择修改前后缀文件的类型(.*修改全部文件) 
#######################################################################################
proc Batch_Rename {Path Name Prefix Suffix Format mode} {# 检查输入的Path是否是文件夹、是否存在if {![expr [file isdirectory $Path] && [file exists $Path]]} {puts [format "You should enter correct path or directory:*%s*" $Path]return}# 检查输入的Prefix Suffix Format是否都为空,不能全为空if {[string equal $Name ""] && \[string equal $Prefix ""] && \[string equal $Suffix ""] && \[string equal $Format ""]} {puts "No modification!"return}if {![string equal [string index $Path end] "/"]} {append Path "/"}# 如果是mode1,那么需要把两种格式分开# 其余mode不需要if {[expr $mode == 1]} {if {![expr [regexp {^(\.[a-zA-Z]+\.[a-zA-Z]+)$} $Format] || [string match $Format ".*"]]} {puts "You should enter correct Format!"return}set Format_Part [split $Format "."]set OldFormat [join [list "." [lindex $Format_Part 1]] ""]set NewFormat [join [list "." [lindex $Format_Part 2]] ""]set File_List [glob [join [list $Path [format "*%s" $OldFormat]] ""]]} else {if {![expr [regexp {^(\.[a-zA-Z]+)$} $Format] || [string match $Format ".*"]]} {puts "You should enter correct Format!"return}set File_List [glob [join [list $Path [format "*%s" $Format]] ""]]}set epoch 1foreach File $File_List {# WholeName = OldName + OldFormatset Name_Format [file tail $File]set OldName [file rootname $Name_Format]set OldFormat [file extension $Name_Format]switch $mode {0 {file rename $File [join [list $Path [format "%s_%03d" $Name $epoch] $OldFormat] ""]}1 {file rename $File [join [list $Path $OldName $NewFormat] ""]}2 {file rename $File [join [list $Path $Prefix $OldName $Suffix $OldFormat] ""]}3 {set OldName [string trimleft $OldName $Prefix]set OldName [string trimright $OldName $Suffix]file rename $File [join [list $Path $OldName $OldFormat] ""]}default {puts "Please Enter Correct Mode!"return}}incr epoch 1}
}Batch_Mkfile "F:/Tcl/Batch_Rename/Test/" "v" ".v" 10Batch_Rename "F:/Tcl/Batch_Rename/Test/" "" "WORD" "word" ".word" 3

过程Batch_Mkfile的功能是批量创建文件,便于生成Batch_Rename的测试文件。

38-50行:检查输入的参数是否正确;

52-54行:用户输入的路径可能不以“/”结尾,这种情况补上“/”;

56-73行:由于用户可以自定义需要修改的文件类型,因此需要将目录下对应的文件放入File_List中。由于mode=1输入的文件类型类似.txt.doc(将.txt格式修改为.doc),因此需要分离出.txt和.doc,然后再获取文件,因此这种mode需要单独处理;

75-108行:给文件改名的主要部分。
78-80行:首先取出文件名,例如txt_001.txt;然后分割成txt_001和.txt;
83-85行:改名。将txt_001改为$Name,再补上序号_001,其余部分不变;
87-89行:改格式。将.txt修改为$NewFormat;
91-93行:添加前后缀。在txt_001前后加上$Prefix和$Suffix;
95-99行:删除前后缀。在$OldName左边删除$Prefix,右边删除$Suffix。

http://www.jsqmd.com/news/476237/

相关文章:

  • ROS URDF实战:手把手教你正确给sensor_msgs::JointState消息赋值(附常见错误排查)
  • Realistic Vision V5.1动态光影案例:室内窗光/户外阳光/夜景霓虹多光源模拟
  • 2026年可靠的粉碎机制造商推荐,东莞三创粉碎机口碑如何 - 工业推荐榜
  • 数码定制PET膜生产企业哪家好用,广东科森服务如何 - 工业推荐榜
  • C语言实战:数字炸弹游戏开发全流程(附完整代码与随机数生成技巧)
  • 装盒机优质厂商哪家好,分析全自动装盒机厂家优势 - myqiye
  • Vue3项目实战:解决lodash/cloneDeep找不到声明文件的完整指南(含TS配置)
  • AI智能二维码工坊后端架构:请求处理与图像解析流程图解
  • 2026年苏州室内装修,性价比高的团队推荐及价格探寻 - 工业品网
  • TMC9660实战:如何用这颗智能栅极驱动器IC快速搭建高性能伺服控制系统(附开发板配置指南)
  • 汽车贴膜企业怎么选,肇庆星车驾到这家诚信靠谱公司推荐 - mypinpai
  • 2026年翻译耳机选购攻略,有专业研发团队的品牌推荐 - 工业设备
  • UniApp自动化配置:用Node.js实现pages.json动态生成(附完整代码)
  • Transformer遇上CNN:手把手教你用Attention增强卷积网络(附PyTorch实现)
  • Python入门项目:调用MogFace-large API实现简易人脸打卡系统
  • 在IDEA中配置注释模板
  • AI录音笔品牌价格多少,哪家性价比高值得选? - myqiye
  • 4GB显存神器Chandra OCR部署实战:从环境搭建到批量处理全流程
  • 2026年口碑好的超声波喷涂机国产品牌推荐,你了解几家 - 工业设备
  • cv_resnet50_face-reconstruction在心理学研究中的应用:微表情分析
  • Qwen3-TTS声音设计保姆级教程:从部署到生成你的第一个AI语音
  • Real-ESRGAN超分模型在TensorRT上的3种加速方案实测对比(含动态尺寸支持)
  • SmallThinker-3B-Preview开发入门:IntelliJ IDEA插件开发与模型API调用
  • CHORD-X视觉系统与STM32嵌入式平台联动开发指南
  • USB Type-C设计必看:EMS4100N模拟开关的5个实战应用技巧
  • 地奇星RA6E2开发板CGC时钟系统详解:从时钟源到时钟树配置
  • Node.js后端服务集成通义千问AI能力:从环境配置到API路由设计
  • 5G定位实战:Multi-RTT技术如何解决室内外无缝定位难题(附3GPP TS 38.305 V18配置示例)
  • 小白也能玩转DeerFlow:快速部署AI研究助手,自动生成播客内容
  • SOONet与Java集成开发:构建企业级视频内容审核系统