You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何递归批量重命名网络共享目录中含冒号的文件为下划线

批量递归重命名共享目录中含冒号的文件

解决方案代码

方法1:使用os模块

import os

def rename_files_with_colon(root_dir):
    # 递归遍历目标目录下所有文件
    for dirpath, _, filenames in os.walk(root_dir):
        for filename in filenames:
            if ":" in filename:
                old_full_path = os.path.join(dirpath, filename)
                new_filename = filename.replace(":", "_")
                new_full_path = os.path.join(dirpath, new_filename)
                try:
                    os.rename(old_full_path, new_full_path)
                    print(f"已重命名: {old_full_path} -> {new_full_path}")
                except Exception as e:
                    print(f"重命名失败 [{old_full_path}]: {str(e)}")

# 替换为你的网络共享目录路径,比如 r"\\server\shared_folder"
rename_files_with_colon(r"\\your_shared_server\target_directory")

方法2:使用pathlib(更简洁的路径处理)

from pathlib import Path

def rename_files_with_colon(root_dir):
    root_path = Path(root_dir)
    # 递归匹配所有文件
    for file in root_path.rglob("*"):
        if file.is_file() and ":" in file.name:
            new_name = file.name.replace(":", "_")
            new_path = file.parent / new_name
            try:
                file.rename(new_path)
                print(f"已重命名: {file} -> {new_path}")
            except Exception as e:
                print(f"重命名失败 [{file}]: {str(e)}")

# 调用示例
rename_files_with_colon(r"\\your_shared_server\target_directory")

关键注意事项

  • 备份优先:操作前建议先备份共享目录中的文件,避免意外损失
  • 权限确认:确保你的账户对目标共享目录有写入权限,否则会触发权限错误
  • 预检查:可以先注释掉重命名代码(os.rename或file.rename),只打印待重命名路径,确认所有目标文件都被正确识别后再执行实际重命名
  • 路径格式:网络共享目录路径在Windows下推荐使用原始字符串(前缀r""),避免转义字符导致路径解析错误

关于编码处理的问题说明

你之前尝试的编码转换方案会导致路径出现额外转义字符,是因为编码后得到的是字节串而非字符串,打印时会显示转义符号。直接从文件名层面替换特殊字符,才是解决问题的根本方式。

内容的提问来源于stack exchange,提问作者Gavin Williams

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 19:49:52