如何批量重命名文件后缀,一个脚本搞定
- 842字
- 4分钟
- 2024-07-18
在某些情况下,我们可能需要批量重命名文件的扩展名,例如将所有 .txt
文件改为 .md
。本文将详细介绍如何使用批处理文件(.bat)和Shell脚本来实现这个目标,包括详细的步骤和用户交互提示。
批处理文件实现
我们将编写一个批处理脚本(.bat),它会一步步引导用户完成批量重命名文件扩展名的任务。
1. 创建批处理文件
创建一个名为 rename_extension.bat
的文件,并将以下内容复制到其中:
1@echo off2chcp 65001 > nul3setlocal enabledelayedexpansion4
5rem 第一步:提示用户输入要修改的目录6set "dir="7set /p dir="请输入要修改的目录: "8if not exist "%dir%" (9 echo 目录不存在!10 exit /b11)12
13rem 第二步:询问用户是否包括所有子目录14set "include_subdirs="15set /p include_subdirs="是否包括所有子目录? (y/n): "16
17rem 第三步:提示用户输入原始后缀名和新的后缀名18set "orig_ext="19set /p orig_ext="请输入原始文件后缀名(不带点): "20set "new_ext="21set /p new_ext="请输入新的文件后缀名(不带点): "22
23rem 第四步:执行重命名操作24if /i "%include_subdirs%"=="y" (25 rem 包括子目录26 for /r "%dir%" %%f in (*.%orig_ext%) do (27 set "filepath=%%f"28 ren "%%f" "%%~nf.%new_ext%"29 )30) else (31 rem 不包括子目录32 for %%f in ("%dir%\*.%orig_ext%") do (33 set "filepath=%%f"34 ren "%%f" "%%~nf.%new_ext%"35 )36)37
38echo 所有匹配的文件已重命名。39pause
2. 运行批处理文件
双击 rename_extension.bat
文件,按照提示输入相应的信息,即可批量重命名指定目录下的文件扩展名。
Shell脚本实现
我们将编写一个Shell脚本(.sh),它会一步步引导用户完成批量重命名文件扩展名的任务。
1. 创建Shell脚本
创建一个名为 rename_extension.sh
的文件,并将以下内容复制到其中:
1#!/bin/bash2
3# 第一步:提示用户输入要修改的目录4read -p "请输入要修改的目录: " dir5if [ ! -d "$dir" ]; then6 echo "目录不存在!"7 exit 18fi9
10# 第二步:询问用户是否包括所有子目录11read -p "是否包括所有子目录? (y/n): " include_subdirs12
13# 第三步:提示用户输入原始后缀名和新的后缀名14read -p "请输入原始文件后缀名(不带点): " orig_ext15read -p "请输入新的文件后缀名(不带点): " new_ext16
17# 第四步:执行重命名操作18if [ "$include_subdirs" = "y" ] || [ "$include_subdirs" = "Y" ]; then19 # 包括子目录20 find "$dir" -type f -name "*.$orig_ext" -exec bash -c 'mv "$0" "${0%.*}.'$new_ext'"' {} \;21else22 # 不包括子目录23 find "$dir" -maxdepth 1 -type f -name "*.$orig_ext" -exec bash -c 'mv "$0" "${0%.*}.'$new_ext'"' {} \;24fi25
26echo "所有匹配的文件已重命名。"
2. 赋予脚本执行权限
在终端中运行以下命令,为脚本赋予执行权限:
1chmod +x rename_extension.sh
3. 运行Shell脚本
在终端中运行以下命令,按照提示输入相应的信息,即可批量重命名指定目录下的文件扩展名:
1./rename_extension.sh
总结
本文介绍了如何使用批处理文件(.bat)和Shell脚本批量重命名文件扩展名,并提供了详细的步骤和用户交互提示。通过这些脚本,我们可以轻松地批量修改文件扩展名,提高工作效率。


