批量修改文件扩展名大小写脚本

wen 实用脚本 1

本文目录导读:

批量修改文件扩展名大小写脚本

  1. Windows (批处理)
  2. Python (跨平台)
  3. Linux/Mac (Bash)
  4. PowerShell (Windows)
  5. 使用说明
  6. 注意事项
  7. 功能扩展

Windows (批处理)

将所有扩展名改为小写

@echo off
setlocal enabledelayedexpansion
echo 正在将扩展名改为小写...
for %%f in (*.*) do (
    set "filename=%%~nf"
    set "ext=%%~xf"
    if not "!ext!"=="" (
        set "ext=!ext: =!"  REM 去除空格
        if "!ext!"=="!ext!" (
            for %%i in (!ext!) do set "ext=%%i"
        )
        set "newext=!ext!"
        for %%l in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
            set "newext=!newext:%%l=%%l!"
        )
        if not "!ext!"=="!newext!" (
            ren "%%f" "!filename!!newext!"
            echo 已修改: %%f -^> !filename!!newext!
        )
    )
)
echo 完成!
pause

将所有扩展名改为大写

@echo off
setlocal enabledelayedexpansion
echo 正在将扩展名改为大写...
for %%f in (*.*) do (
    set "filename=%%~nf"
    set "ext=%%~xf"
    if not "!ext!"=="" (
        set "newext=!ext!"
        for %%l in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
            set "newext=!newext:%%l=%%l!"
        )
        if not "!ext!"=="!newext!" (
            ren "%%f" "!filename!!newext!"
            echo 已修改: %%f -^> !filename!!newext!
        )
    )
)
echo 完成!
pause

Python (跨平台)

import os
import tkinter as tk
from tkinter import filedialog, messagebox
def batch_rename_extensions(directory, to_upper=False):
    """批量修改文件扩展名大小写"""
    renamed_count = 0
    for filename in os.listdir(directory):
        file_path = os.path.join(directory, filename)
        # 跳过目录
        if os.path.isdir(file_path):
            continue
        # 分离文件名和扩展名
        name, ext = os.path.splitext(filename)
        if ext:  # 如果有扩展名
            # 转换大小写
            new_ext = ext.upper() if to_upper else ext.lower()
            # 如果扩展名改变了
            if new_ext != ext:
                new_filename = name + new_ext
                new_path = os.path.join(directory, new_filename)
                try:
                    os.rename(file_path, new_path)
                    print(f"已修改: {filename} -> {new_filename}")
                    renamed_count += 1
                except Exception as e:
                    print(f"修改失败 {filename}: {e}")
    return renamed_count
def main():
    # 创建简单GUI
    root = tk.Tk()
    root.withdraw()  # 隐藏主窗口
    # 选择文件夹
    directory = filedialog.askdirectory(title="选择要处理的文件夹")
    if not directory:
        return
    # 选择转换方向
    choice = messagebox.askyesno("选择操作", "是否改为大写?(点击'是'改为大写,'否'改为小写)")
    if choice:
        print("正在将所有扩展名改为大写...")
        count = batch_rename_extensions(directory, to_upper=True)
        messagebox.showinfo("完成", f"已修改 {count} 个文件的扩展名(改为大写)")
    else:
        print("正在将所有扩展名改为小写...")
        count = batch_rename_extensions(directory, to_upper=False)
        messagebox.showinfo("完成", f"已修改 {count} 个文件的扩展名(改为小写)")
if __name__ == "__main__":
    main()

Linux/Mac (Bash)

将所有扩展名改为小写

#!/bin/bash
echo "正在将扩展名改为小写..."
for file in *.*; do
    if [ -f "$file" ]; then
        filename="${file%.*}"
        ext="${file##*.}"
        # 转换为小写
        new_ext="${ext,,}"
        if [ "$ext" != "$new_ext" ]; then
            new_file="${filename}.${new_ext}"
            mv "$file" "$new_file"
            echo "已修改: $file -> $new_file"
        fi
    fi
done
echo "完成!"

将所有扩展名改为大写

#!/bin/bash
echo "正在将扩展名改为大写..."
for file in *.*; do
    if [ -f "$file" ]; then
        filename="${file%.*}"
        ext="${file##*.}"
        # 转换为大写
        new_ext="${ext^^}"
        if [ "$ext" != "$new_ext" ]; then
            new_file="${filename}.${new_ext}"
            mv "$file" "$new_file"
            echo "已修改: $file -> $new_file"
        fi
    fi
done
echo "完成!"

PowerShell (Windows)

# 将所有扩展名改为小写
Get-ChildItem -File | ForEach-Object {
    $oldName = $_.Name
    $newName = $_.BaseName + $_.Extension.ToLower()
    if ($oldName -ne $newName) {
        Rename-Item -Path $_.FullName -NewName $newName
        Write-Host "已修改: $oldName -> $newName"
    }
}
Write-Host "完成!"

使用说明

Python版本(推荐):

  1. 安装Python(如果未安装)
  2. 保存代码为 rename_ext.py
  3. 运行:python rename_ext.py
  4. 选择文件夹,选择转换方向

Windows批处理:

  1. 保存为 .bat 文件
  2. 放在要处理的文件夹中运行
  3. 或放入系统路径中全局使用

Linux/Mac:

  1. 保存脚本文件
  2. 赋予执行权限:chmod +x script.sh
  3. 在目标文件夹中运行:./script.sh

PowerShell:

  1. 在要处理的文件夹中打开PowerShell
  2. 直接运行脚本代码

注意事项

⚠️ 警告

  • 备份数据:运行前请备份重要文件
  • 测试运行:先在测试文件夹中试用
  • 文件名冲突:注意可能存在的文件名冲突(如 file.txtfile.TXT
  • 递归处理:以上脚本默认只处理当前文件夹,如需递归需修改参数

功能扩展

如果需要在子文件夹中递归处理,可以修改脚本:

Python递归版本

def batch_rename_extensions_recursive(directory, to_upper=False):
    for root, dirs, files in os.walk(directory):
        for filename in files:
            name, ext = os.path.splitext(filename)
            if ext:
                new_ext = ext.upper() if to_upper else ext.lower()
                if new_ext != ext:
                    old_path = os.path.join(root, filename)
                    new_path = os.path.join(root, name + new_ext)
                    os.rename(old_path, new_path)

根据需要选择合适的脚本使用!

抱歉,评论功能暂时关闭!