吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 122|回复: 10
上一主题 下一主题
收起左侧

[经验求助] 批量按文件夹名给里面的文件改名

[复制链接]
跳转到指定楼层
楼主
a40241 发表于 2026-5-6 15:35 回帖奖励
25吾爱币
目前有很多个文件夹,每个文件夹里面只有一个文件,请大佬写个代码 批量按文件夹名给里面的文件命名  谢谢

最佳答案

查看完整内容

保存文件为 .bat格式,直接在文件夹目录下运行 [mw_shl_code=bash,true]@echo off :: 设置编码为UTF-8,防止文件夹中文名乱码 chcp 65001 >nul setlocal enabledelayedexpansion :: ========================================== :: 请在下方双引号内输入你的目标根目录路径 set "TARGET_DIR=C:\你的文件夹路径" :: ========================================== if not exist "%TARGET_DIR%" ( echo 错误:找不到 ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
weiyepin 发表于 2026-5-6 15:35
本帖最后由 weiyepin 于 2026-5-6 17:01 编辑
a40241 发表于 2026-5-6 16:35
大佬能做成直接运行的的文件不,加分谢谢
保存文件为  .bat格式,直接在文件夹目录下运行

[Bash shell] 纯文本查看 复制代码
@echo off
:: 设置编码为UTF-8,防止文件夹中文名乱码
chcp 65001 >nul
setlocal enabledelayedexpansion
:: ==========================================
:: 请在下方双引号内输入你的目标根目录路径
set "TARGET_DIR=C:\你的文件夹路径"
:: ==========================================
if not exist "%TARGET_DIR%" (
    echo 错误:找不到指定的路径 "%TARGET_DIR%"
    pause
    exit /b
)
cd /d "%TARGET_DIR%"
echo 开始批量重命名...
echo ------------------------------------------
:: 遍历当前目录下的所有子文件夹
for /d %%F in (*) do (
    set "folder_name=%%F"
    set "file_count=0"
    set "target_file="
    :: 统计文件夹内的文件数量,并记录文件名
    for %%I in ("%%F\*") do (
        set /a file_count+=1
        set "target_file=%%I"
    )
    :: 判断是否只有一个文件
    if !file_count! equ 1 (
        :: 获取文件的扩展名
        set "ext=%%~x[target_file]"
        for %%A in ("!target_file!") do set "ext=%%~xA"
        :: 执行重命名:将该文件重命名为 文件夹名.扩展名
        ren "!target_file!" "!folder_name!!ext!"
        echo 成功:[%%F] 文件夹中的文件已重命名为 "!folder_name!!ext!"
    ) else if !file_count! equ 0 (
        echo 提示:[%%F] 是空文件夹,已跳过。
    ) else (
        echo 提示:[%%F] 中有多个文件(!file_count!个),为安全起见已跳过。
    )
)
echo ------------------------------------------
echo 处理完成!
pause
3#
lzy8108 发表于 2026-5-6 15:38
4#
lzy8108 发表于 2026-5-6 15:41
lzy8108 发表于 2026-5-6 15:38
https://www.52pojie.cn/forum.php?mod=viewthread&tid=2102083&highlight=%CE%C4%BC%FE%BC%D0%C5%FA%C1%BF ...

论坛这个帖子里面就有现成的工具[Windows] 文件/文件夹批量重命名工具 OncePower v3.1.1

以下为引用帖子中的下载信息:
5#
weiyepin 发表于 2026-5-6 16:24
本帖最后由 weiyepin 于 2026-5-6 16:26 编辑

[Python] 纯文本查看 复制代码
import os
import shutil
def rename_files_by_folder(root_path):
    # 遍历目标路径下的所有子目录
    for folder_name in os.listdir(root_path):
        folder_path = os.path.join(root_path, folder_name)
        # 确保处理的是文件夹
        if os.path.isdir(folder_path):
            files = os.listdir(folder_path)
             # 过滤掉可能的隐藏文件(如 .DS_Store)
            files = [f for f in files if not f.startswith('.')]
            if len(files) == 1:
                old_file_name = files[0]
                # 获取文件的后缀名
                file_ext = os.path.splitext(old_file_name)[1]
                # 构建新的文件名:文件夹名 + 原后缀
                new_file_name = folder_name + file_ext
                old_file_path = os.path.join(folder_path, old_file_name)
                new_file_path = os.path.join(folder_path, new_file_name)
                try:
                    os.rename(old_file_path, new_file_path)
                    print(f"成功:'{folder_name}' 文件夹中的文件已重命名为 '{new_file_name}'")
                except Exception as e:
                    print(f"错误:重命名 '{folder_name}' 失败,原因:{e}")
            elif len(files) == 0:
                print(f"提示:'{folder_name}' 是空文件夹,跳过。")
            else:
                print(f"提示:'{folder_name}' 中有多个文件,为安全起见已跳过。")
if __name__ == "__main__":
    # 在这里输入你的目标根目录路径
    target_directory = r'C:\你的文件夹路径' 
    rename_files_by_folder(target_directory)


使用说明与建议
路径设置:请将代码中 target_directory 修改为你实际存放这些文件夹的父目录。建议使用 r'C:\path\to\your\folder' 这种原始字符串格式,避免反斜杠转义问题。
安全性:代码中加入了 len(files) == 1 的判断,如果某个文件夹里意外有多个文件,它会跳过处理,防止误删或覆盖。
强烈建议:在正式运行前,先对文件夹做一个备份,或者先用少量文件夹进行测试。
扩展性:如果你希望重命名后的文件同时移动到同一个目录下(而不是留在各自文件夹里),可以在 os.rename 之后加一行 shutil.move。
这个脚本运行效率很高,处理几百个文件夹也就一瞬间的事。如果有其他逻辑调整需求(比如要在名字后面加序号),随时告诉我。
6#
 楼主| a40241 发表于 2026-5-6 16:35 |楼主
weiyepin 发表于 2026-5-6 16:24
[mw_shl_code=python,true]import os
import shutil
def rename_files_by_folder(root_path):

大佬能做成直接运行的的文件不,加分谢谢
7#
老梁不说话 发表于 2026-5-6 16:56
https://yun.kuaiya.cn/r/iu94azcwjyEGRyDkpfE
把 batch_rename.bat 复制到你那个有很多子文件夹的文件夹里运行
8#
lzy8108 发表于 2026-5-6 17:03
a40241 发表于 2026-5-6 16:35
大佬能做成直接运行的的文件不,加分谢谢

楼主您好!我发您的现成的工具我自己也在用,可以轻松解决您的需求,还是您不会用,或者有什么问题?可以提出来探讨
9#
WecHua 发表于 2026-5-6 18:00
大佬们都好厉害
10#
 楼主| a40241 发表于 2026-5-6 18:10 |楼主
lzy8108 发表于 2026-5-6 17:03
楼主您好!我发您的现成的工具我自己也在用,可以轻松解决您的需求,还是您不会用,或者有什么问题?可以 ...

大概率是不会用,我的需求的是按文件夹名修改文件夹内文件的名字,
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-5-7 04:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表