「三千世界」 发表于 2024-7-5 17:20

百度网盘文件名合法化

本帖最后由 「三千世界」 于 2024-7-5 17:24 编辑

百度网盘文件名不能包含字符怎么解决?
可以使用这个脚本,将一些不合法字符去除掉。

1、检查上传的文件中名或文件夹中是否真的含有这些字符\/:*?"<>|,一般不会存在的,因为电脑系统会自动拒绝掉这些字符。2、文件名称以及文件夹名称的开头或结尾是否含有空格,一定要注意文件夹名称前后是不可以用空格的,文件名称可以用但一般尽量不要用,不合常规。3、遇到这个问题,可以尝试更改下文件夹名称和文件名称成普通名称,如果改好后没有问题,那么说明原名称是有问题的。4、直接下载最新的百度网盘,最新版本经测试没有发现这类问题。文件名不能包含/:*?,这些字符是英文状态下的,Windows操作系统不让我们用,我们可以用中文状态下的对应字符即可,注意要设置成全角和中字标点状态下输入字符才可以的。文件名不能包含的字符有:”(双引号)、*(星号)、<(小于)、>(大于)、?(问号)、\(反斜杠)、|(竖线)、/ (正斜杠)、 : (冒号),这些字符操作系统是不让你用在文件名称中的,如果使用就会重命名无效,并且弹出警示框。文件名除了不能用的特殊字符外,还能一些特定的系统保留名称也是不能用的,它们是:CON、PRN、AUX、NUL、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8 、 LPT9。


import os
import re
from pathlib import Path

# 定义一个函数来清理文件名和目录名

def clean_name(name):
    # 保留中文、英文、数字、点、破折号、下划线
    pattern = re.compile(r'[^\u4e00-\u9fa5a-zA-Z0-9。#《》._-:+()()@]+')
    return pattern.sub('', name)

# 递归遍历目录并清理目录名


def clean_directories(path):
    for root, dirs, files in os.walk(path, topdown=False):
      for dir_name in dirs:
            cleaned_name = clean_name(dir_name)
            try:
                os.rename(os.path.join(root, dir_name),
                        os.path.join(root, cleaned_name))
            except OSError as e:
                print(f"Error renaming directory {dir_name}: {e}")

# 递归遍历目录并清理文件名


def clean_files(path):
    for root, dirs, files in os.walk(path):
      for file_name in files:
            cleaned_name = clean_name(file_name)
            try:
                os.rename(os.path.join(root, file_name),
                        os.path.join(root, cleaned_name))
            except OSError as e:
                print(f"Error renaming file {file_name}: {e}")

# 递归遍历目录并重命名图片文件


def rename_images(path):
    image_extensions = ['.png', '.jpg', '.jpeg',
                        '.gif', '.bmp', '.tiff', '.svg']
    for root, dirs, files in os.walk(path):
      for file_name in files:
            extension = os.path.splitext(file_name).lower()
            if extension in image_extensions:
                dir_name = Path(root).name
                new_file_name = f"{clean_name(dir_name)}_{
                  clean_name(file_name)}"
                try:
                  os.rename(os.path.join(root, file_name),
                              os.path.join(root, new_file_name))
                except OSError as e:
                  print(f"Error renaming image {file_name}: {e}")

# 主函数


def main():
    current_dir = os.getcwd()

    # 第一次遍历:清理目录名
    clean_directories(current_dir)

    # 第二次遍历:清理文件名
    clean_files(current_dir)

    # 第三次遍历:重命名图片文件
    rename_images(current_dir)


if __name__ == "__main__":
    main()

gmingx 发表于 2024-7-11 10:21


感谢分享。使用时注意49行,这里单行就好。new_file_name = f”{clean_name(dir_name)}_{clean_name(file_name)}"

fhlfxtd 发表于 2024-9-16 21:19


百度网盘好,就是下载太慢

newGuy 发表于 2024-9-16 16:35

很不错,适合企业大户

chuhua 发表于 2024-9-16 04:48

要是有exe就更好了,要不然没法用啊

Dmark 发表于 2024-7-29 16:28

liaoticai 发表于 2024-7-19 08:27
百度网盘好,就是不出钱下载太慢

现在不是推出了,用闲置宽带换下载速度,我速度很快

176008 发表于 2024-7-20 13:38

百度网盘好,就是不办会员下载太慢

liaoticai 发表于 2024-7-19 08:27

百度网盘好,就是不出钱下载太慢

yxc8218147 发表于 2024-7-13 00:14

非常感谢,这个问题竟然在这里找到解决方法了,感谢

ffeiko 发表于 2024-7-10 22:50

感谢分享,方便网盘命名
页: [1] 2
查看完整版本: 百度网盘文件名合法化