科学的文件架构 + 一键生成文件夹层级工具 = 极具妥帖的秩序感受
又是一周,好久不见,正琢磨着这次给大家带来点什么好东西,突然百度网盘的整理让我头疼不已,从我记事以来,这网盘已经整理过N遍了,总是乱了整理,整理了又乱。或者说辛辛苦苦整理一次,结果没用几个月发现放置的资料并没有按照预期进行,文件继续混乱着,哎~
我想了想,一定有什么方法打破这个魔咒,于是就有了这篇文章(下边这个是一个简短的文件架构,文章后边告诉你怎么转化为对应文件夹,最后拖到百度网盘就可以了)。
├── 临床医学 (Clinical Medicine)
│ ├── 内科学 (Internal Medicine)
│ │ ├── 心血管内科学 (Cardiology)
│ │ ├── 内分泌学 (Endocrinology)
│ │ ├── 消化内科学 (Gastroenterology)
│ │ └── 肾内科学 (Nephrology)
│ ├── 外科学 (Surgery)
│ │ ├── 心脏外科学 (Cardiac Surgery)
│ │ ├── 神经外科学 (Neurosurgery)
│ │ ├── 骨科学 (Orthopedics)
│ │ └── 泌尿外科学 (Urology)
│ ├── 妇产科学 (Obstetrics and Gynecology)
│ │ ├── 妇科学 (Gynecology)
│ │ └── 产科学 (Obstetrics)
- 首先我会给大家带来一些比较规范科学的文件管理架构,因为百度网盘里的东西基本上都是“囤货”,所以说只要科学,那这个架构用一些时日应该不成问题;
- 接着给大家介绍一下怎么讲这些架构转化为实际的文件夹结构;
- 最后仍然是分享一下本次自动化办公的源文件,若有代码爱好者,也可以在这个基础上继续优化。
一、规范科学的文件架构
首先看一下我们公司的文件管理体系,有点复杂,但很好用。
1. 一种学生较为通用的文件管理体系
├── 学生文件管理
│ ├── 娱乐和爱好
│ │ ├── 音乐和视频
│ │ │ ├── 音乐
│ │ │ ├── MV
│ │ │ └── 电影
│ │ ├── 图片和相册
│ │ │ ├── 照片
│ │ │ └── 自拍
│ │ └── 书籍和电子书
│ │ ├── 纸质书籍
│ │ └── 电子书籍
│ ├── 学习和教育
│ │ ├── 课程资料
│ │ │ ├── 课件
│ │ │ ├── 笔记
│ │ │ └── 实验报告
│ │ └── 成绩单和证书
│ │ ├── 成绩单
│ │ └── 荣誉证书
│ ├── 日常生活
│ │ ├── 健康与运动
│ │ │ ├── 健身记录
│ │ │ └── 运动比赛
│ │ ├── 旅行和活动
│ │ │ ├── 旅行照片
│ │ │ └── 活动回忆
│ │ └── 社交和人际关系
│ │ ├── 社交活动
│ │ └── 朋友圈
│ └── 个人发展
│ ├── 研究和项目
│ │ ├── 研究论文
│ │ └── 项目报告
│ └── 职业发展
│ ├── 实习证明
│ └── 职业建议
2. 一种老师较为通用的文件管理体系
├── 教师文件管理
│ ├── 课程规划和教学资料
│ │ ├── 课程大纲
│ │ ├── 授课计划
│ │ ├── 教案
│ │ └── 教学资源
│ ├── 学生管理
│ │ ├── 学生名单
│ │ ├── 成绩记录
│ │ └── 学生作业
│ ├── 考试和评估
│ │ ├── 考试安排
│ │ ├── 考试试卷
│ │ └── 考试成绩
│ ├── 教育技术和工具
│ │ ├── 在线课程平台
│ │ ├── 教学应用程序
│ │ └── 多媒体资源
│ ├── 行政和管理
│ │ ├── 学校文件
│ │ ├── 会议记录
│ │ └── 表格和表格
│ └── 专业发展
│ ├── 研究论文
│ ├── 会议演讲
│ └── 培训证书
3. 一种职场人较为通用的文件管理体系
├── 职场文件管理
│ ├── 项目管理
│ │ ├── 项目计划
│ │ ├── 进度报告
│ │ ├── 会议记录
│ │ └── 合同和协议
│ ├── 客户和合作伙伴
│ │ ├── 客户资料
│ │ ├── 合作伙伴协议
│ │ └── 业务提案
│ ├── 资料和文档
│ │ ├── 行业报告
│ │ ├── 研究文件
│ │ └── 文档模板
│ ├── 日常工作
│ │ ├── 电子邮件
│ │ ├── 日程安排
│ │ └── 任务清单
│ ├── 专业发展
│ │ ├── 培训和学习
│ │ ├── 会议和研讨会
│ │ └── 履历和推荐信
│ ├── 财务管理
│ │ ├── 报销单据
│ │ └── 薪资和税务
│ └── 个人信息
│ ├── 管理登录信息
│ └── 个人笔记
4. 一种医学较为通用的文件管理体系
├── 医学文件管理
│ ├── 患者管理
│ │ ├── 患者病历
│ │ ├── 检查报告
│ │ ├── 治疗计划
│ │ └── 处方和药物信息
│ ├── 临床研究
│ │ ├── 研究课题
│ │ ├── 数据收集
│ │ ├── 研究报告
│ │ └── IRB文件(伦理委员会文件)
│ ├── 医学教育
│ │ ├── 教学课件
│ │ ├── 学术讲座
│ │ └── 教育视频
│ ├── 学术发表
│ │ ├── 学术论文
│ │ ├── 会议演讲
│ │ └── 期刊投稿
│ ├── 医疗政策与管理
│ │ ├── 医院政策文件
│ │ ├── 管理会议记录
│ │ └── 医疗设备和供应管理
│ ├── 质量控制和认证
│ │ ├── 质量评估报告
│ │ └── 认证文件
│ └── 个人发展
│ ├── 培训证书
│ ├── 学术奖项
│ └── 职业发展计划
5. 最后放一个我们第五设计的文件管理体系
├── 行政管理 (Administration)
│ ├── 行政通知 (Admin Notices)
│ │ ├── 公司公告 (Company Announcements)
│ │ ├── 内部通讯 (Internal Communications)
│ │ └── 活动通知 (Event Notices)
│ ├── 政策和程序 (Policies & Procedures)
│ │ ├── 公司政策 (Company Policies)
│ │ ├── 操作流程 (Operational Procedures)
│ │ └── 安全指南 (Safety Guidelines)
│ └── 办公管理 (Office Management)
│ ├── 设施管理 (Facility Management)
│ ├── 资产管理 (Asset Management)
│ └── 供应商合同 (Vendor Contracts)
├── 财务与会计 (Finance & Accounting)
│ ├── 财务报表 (Financial Statements)
│ │ ├── 资产负债表 (Balance Sheets)
│ │ ├── 利润表 (Income Statements)
│ │ └── 现金流量表 (Cash Flow Statements)
│ ├── 预算与规划 (Budget & Planning)
│ │ ├── 年度预算 (Annual Budgets)
│ │ ├── 财务预测 (Financial Forecasts)
│ │ └── 支出计划 (Expenditure Plans)
│ └── 税务文件 (Tax Documents)
│ ├── 税务申报 (Tax Filings)
│ ├── 税务合规 (Tax Compliance)
│ └── 税务咨询 (Tax Advisory)
├── 人力资源 (Human Resources)
│ ├── 招聘与入职 (Recruitment & Onboarding)
│ │ ├── 招聘计划 (Recruitment Plans)
│ │ ├── 候选人简历 (Candidate Resumes)
│ │ └── 入职文件 (Onboarding Documents)
│ ├── 员工记录 (Employee Records)
│ │ ├── 员工档案 (Employee Files)
│ │ ├── 绩效评估 (Performance Evaluations)
│ │ └── 薪酬福利 (Compensation & Benefits)
│ └── 培训与发展 (Training & Development)
│ ├── 培训计划 (Training Programs)
│ ├── 培训材料 (Training Materials)
│ └── 发展规划 (Career Development Plans)
├── 市场与销售 (Marketing & Sales)
│ ├── 市场调研 (Market Research)
│ │ ├── 市场分析 (Market Analysis)
│ │ ├── 客户调查 (Customer Surveys)
│ │ └── 数据分析 (Data Analysis)
│ ├── 销售报告 (Sales Reports)
│ │ ├── 销售业绩 (Sales Performance)
│ │ ├── 销售预测 (Sales Forecasts)
│ │ └── 销售目标 (Sales Targets)
│ ├── 客户档案 (Client Profiles)
│ │ ├── 客户基本信息 (Client Information)
│ │ │ ├── 联系信息 (Contact Information)
│ │ │ ├── 公司信息 (Company Information)
│ │ │ └── 业务背景 (Business Background)
│ │ ├── 客户需求 (Client Needs)
│ │ │ ├── 项目需求 (Project Needs)
│ │ │ ├── 定制要求 (Customization Requests)
│ │ │ └── 反馈意见 (Feedback)
│ │ ├── 项目记录 (Project Records)
│ │ │ ├── 项目计划 (Project Plans)
│ │ │ ├── 项目进展 (Project Progress)
│ │ │ └── 项目总结 (Project Close-out)
│ │ └── 客户合同 (Client Contracts)
│ │ ├── 合同副本 (Contract Copies)
│ │ ├── 合同条款 (Contract Terms)
│ │ └── 合同修订 (Contract Amendments)
│ ├── 营销活动 (Marketing Campaigns)
│ │ ├── 活动计划 (Campaign Planning)
│ │ ├── 活动执行 (Campaign Execution)
│ │ └── 活动评估 (Campaign Evaluation)
│ ├── 销售策略 (Sales Strategies)
│ │ ├── 策略文档 (Strategy Documents)
│ │ └── 销售培训 (Sales Training)
│ ├── 客户沟通记录 (Customer Communication Logs)
│ │ ├── 沟通记录 (Communication Records)
│ │ └── 客户反馈 (Customer Feedback)
│ └── 合同与协议 (Contracts & Agreements)
│ ├── 标准合同 (Standard Contracts)
│ ├── 自定义合同 (Customized Contracts)
│ └── 合同修订 (Contract Amendments)
├── 技术与研发 (Tech & R&D)
│ ├── 项目文档 (Project Documentation)
│ │ ├── 项目计划 (Project Plans)
│ │ ├── 项目进展报告 (Progress Reports)
│ │ └── 项目总结 (Project Close-out)
│ ├── 代码库 (Code Repositories)
│ │ ├── 源代码 (Source Code)
│ │ ├── 版本控制 (Version Control)
│ │ └── 代码文档 (Code Documentation)
│ └── 测试报告 (Test Reports)
│ ├── 测试计划 (Test Plans)
│ ├── 测试用例 (Test Cases)
│ └── 测试结果 (Test Results)
└── 客户支持与服务 (Customer Support & Services)
├── 客户支持 (Customer Support)
│ ├── 支持请求 (Support Requests)
│ │ ├── 客户请求记录 (Customer Requests)
│ │ │ ├── 在线请求 (Online Requests)
│ │ │ ├── 电话请求 (Phone Requests)
│ │ │ └── 邮件请求 (Email Requests)
│ │ ├── 支持工单 (Support Tickets)
│ │ │ ├── 工单分配 (Ticket Assignment)
│ │ │ ├── 工单跟踪 (Ticket Tracking)
│ │ │ └── 工单关闭 (Ticket Closure)
│ │ └── 请求状态 (Request Status)
│ │ ├── 处理中 (In Progress)
│ │ ├── 待处理 (Pending)
│ │ └── 已完成 (Completed)
│ ├── 解决方案库 (Solution Repository)
│ │ ├── 常见问题解决方案 (FAQ Solutions)
│ │ │ ├── 技术问题 (Technical Issues)
│ │ │ ├── 使用问题 (Usage Issues)
│ │ │ └── 账户问题 (Account Issues)
│ │ ├── 故障排除指南 (Troubleshooting Guides)
│ │ │ ├── 硬件问题 (Hardware Issues)
│ │ │ ├── 软件问题 (Software Issues)
│ │ │ └── 网络问题 (Network Issues)
│ │ └── 技术文档 (Technical Documentation)
│ │ ├── 系统架构 (System Architecture)
│ │ ├── 产品规格 (Product Specifications)
│ │ └── 维护手册 (Maintenance Manuals)
│ └── 沟通记录 (Communication Logs)
│ ├── 电话记录 (Call Logs)
│ ├── 电子邮件记录 (Email Records)
│ └── 聊天记录 (Chat Transcripts)
├── 服务协议 (Service Agreements)
│ ├── 服务合同 (Service Contracts)
│ │ ├── 标准服务合同 (Standard Service Contracts)
│ │ ├── 定制服务合同 (Customized Service Contracts)
│ │ └── 合同修订 (Service Contract Amendments)
│ ├── 服务条款 (Terms of Service)
│ │ ├── 一般条款 (General Terms)
│ │ └── 特殊条款 (Special Terms)
│ └── 保修和支持 (Warranty and
那么问题来了,你知道我分享给你们的那么多程序,都放在哪里吗?嘿嘿
当然上述的文件结构只是一些举例,您要是有需要可以自行复制修改,保存成txt文件,最后用文件夹转化工具建立文件夹就可以了(实在没时间也可以公众号联系我们,给你定制也可以)
二、根据文件架构一键生成文件夹
(文章最后放置有exe程序链接,可以直接获取。)
(1)双击exe程序
(2)可以看到我写的界面,需要先选择文件和选择建立文件夹的位置(界面有点丑,没太多时间哈哈哈,原谅原谅)
(3)选择什么文件?就这个,你可以从上边把内容复制到txt文档,修改后用这个程序一跑,文件夹就全部建好了(有问题还是公众号留言哈,免费技术支持)
(4)点击开始创建,文件夹就创建好了,测试过的,鲁棒性很强。
三、关于自动解析文件架构的代码
本次的代码因为涉及到一定的算法,所以有些走心,资料有些多,如果不需要这块儿内容可以直接翻到最后领资料就行,下边是程序说明。
1. 实现功能:
- 运行程序后打开操作窗口;
- 点击按钮选择指定的txt文档,文档的结构如图所示(类似结构都可以):
├── 行政管理 (Administration)
│ ├── 行政通知 (Admin Notices)
│ │ ├── 公司公告 (Company Announcements)
│ │ ├── 内部通讯 (Internal Communications)
│ │ └── 活动通知 (Event Notices)
│ ├── 政策和程序 (Policies & Procedures)
│ │ ├── 公司政策 (Company Policies)
│ │ ├── 操作流程 (Operational Procedures)
│ │ └── 安全指南 (Safety Guidelines)
│ └── 办公管理 (Office Management)
│ ├── 设施管理 (Facility Management)
│ ├── 资产管理 (Asset Management)
│ └── 供应商合同 (Vendor Contracts)
├── 财务与会计 (Finance & Accounting)
│ ├── 财务报表 (Financial Statements)
│ │ ├── 资产负债表 (Balance Sheets)
│ │ ├── 利润表 (Income Statements)
│ │ └── 现金流量表 (Cash Flow Statements)
│ ├── 预算与规划 (Budget & Planning)
│ │ ├── 年度预算 (Annual Budgets)
│ │ ├── 财务预测 (Financial Forecasts)
│ │ └── 支出计划 (Expenditure Plans)
│ └── 税务文件 (Tax Documents)
│ ├── 税务申报 (Tax Filings)
│ ├── 税务合规 (Tax Compliance)
│ └── 税务咨询 (Tax Advisory)
- 选择指定的文件夹路径;
- 点击开始创建,可以在指定的文件夹下按照txt文档中的结构创建指定的文件夹;
- 健壮性要求:
(1)类似的txt文档都支持,比如用其他字符展示层级;
(2)支持无限层级,只要txt文档别太大就行;
2. 程序构想:
- 逐行读取文件,返回一个列表linesList;
- 根据linesList获取文件夹的最大层级数,返回一个列表tiersList,记得排序,列表如下:
tiersList = [4, 8, 6, 12] # 用每行字符串的无效字符数代表层级,数字越大,层级越低
- 根据tiersList创建一个列表foldersList_root,这个列表里字典的key是tiersList的值,value都是选择的文件夹路径;
foldersList_root = []
- 重点来了
(1)创建一个列表folderList, 存放所有的路径;
(2)创建一个foldersList_catch,用于缓存根文件夹(像行政管理这种文件夹称为根文件夹);
(3)foldersList_catch重置等于[], 逐行读取linesList, 完成一个根文件夹后(foldersList_catch完成),把foldersList_catch放入folderList;
a. 逐行读取,需要先获取这行的无效字符数为InvalidNum;
b. 核心运算,获取每行的文件夹路径;
# 逐行读取字符串中,每行都需要进行以下操作……
for i in len(tiersList):
if InvalidNum == tiersList[i]:
if foldersList_catch == []:
if i == 0:
# 将本行信息作为一个字典存入foldersList_catch,建立了一个根文件夹
else:
if i == 0: # 说明要新建一个根文件夹了
# 将foldersList_catch存到folderList
# 将foldersList_catch重置
else:
# 根据tiersList推算出上一个InvalidNum,然后在foldersList_catch找到在上一级文件夹目录;
# 组建本级目录字符串,存放到foldersList_catch中;
(4)把foldersList_catch重置等于foldersList_root,继续下一个根文件夹的读取。
4. 遍历folderList,利用其中的文件夹目录开始建立文件夹。
3. UML图(草图草图,没那么严谨)
4. 源码文件
import os
import re
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QVBoxLayout, QWidget, QTextEdit, QFileDialog, QMessageBox
from PyQt5.QtGui import QFont, QIcon
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.linesList = [] # 存储txt行信息
self.folderList = [] # 存储所有文件夹路径信息
self.tiersList = [] # 存储文件夹的层级
self.setWindowTitle("TXT 文件选择与预览")
self.setGeometry(100, 100, 900, 600)
self.setWindowIcon(QIcon('icon.png')) # 设置窗口图标
# 设置主布局
layout = QVBoxLayout()
# 文件选择按钮
self.btn_select_txt = QPushButton("选择 TXT 文件")
self.btn_select_txt.setFont(QFont("Arial", 12))
self.btn_select_txt.setStyleSheet('''
QPushButton {
background-color: #f0f0f0;
border: 2px solid #cccccc;
border-radius: 5px;
padding: 10px;
color: #333333;
}
QPushButton:hover {
background-color: #e0e0e0;
border-color: #999999;
}
''')
self.btn_select_txt.clicked.connect(self.select_txt_file)
layout.addWidget(self.btn_select_txt)
# 文件内容预览区域
self.txt_preview = QTextEdit()
self.txt_preview.setReadOnly(True)
self.txt_preview.setStyleSheet('''
QTextEdit {
background-color: #ffffff;
border: 1px solid #cccccc;
padding: 10px;
}
''')
layout.addWidget(self.txt_preview)
# 文件夹选择按钮
self.btn_select_folder = QPushButton("选择文件夹")
self.btn_select_folder.setFont(QFont("Arial", 12))
self.btn_select_folder.setStyleSheet('''
QPushButton {
background-color: #f0f0f0;
border: 2px solid #cccccc;
border-radius: 5px;
padding: 10px;
color: #333333;
}
QPushButton:hover {
background-color: #e0e0e0;
border-color: #999999;
}
''')
self.btn_select_folder.clicked.connect(self.select_folder)
layout.addWidget(self.btn_select_folder)
# 开始创建按钮
self.btn_start = QPushButton("开始创建")
self.btn_start.setFont(QFont("Arial", 12))
self.btn_start.setStyleSheet('''
QPushButton {
background-color: #333333;
border: none;
border-radius: 5px;
color: white;
padding: 15px;
text-align: center;
font-weight: bold;
}
QPushButton:hover {
background-color: #555555;
}
''')
self.btn_start.clicked.connect(self.start_creation)
layout.addWidget(self.btn_start)
# 设置中心窗口
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
# 初始化路径变量
self.txt_file_path = None
self.folder_path = None
def select_txt_file(self):
# 选择 TXT 文件
file_path, _ = QFileDialog.getOpenFileName(self, "选择 TXT 文件", "", "Text Files (*.txt)")
if file_path:
self.txt_file_path = file_path
self.preview_file(file_path)
else:
QMessageBox.information(self, "文件选择", "未选择文件")
def preview_file(self, file_path):
# 预览 TXT 文件内容
try:
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
self.txt_preview.setPlainText(content)
except Exception as e:
QMessageBox.critical(self, "错误", f"无法读取文件: {e}")
def select_folder(self):
# 选择文件夹
folder_path = QFileDialog.getExistingDirectory(self, "选择文件夹")
if folder_path:
self.folder_path = folder_path
print(f"选择的文件夹: {folder_path}")
else:
QMessageBox.information(self, "文件夹选择", "未选择文件夹")
# 读取txt文档,返回self.linesList
def readTxt(self, path):
with open(path, 'r', encoding='utf-8') as file:
lines = file.readlines()
for line in lines:
self.linesList.append(line.strip('\n'))
# 返回字符串中汉字的位置chineseIndex
def getChineseIndex(self, str):
match = re.search(r'[\u4e00-\u9fff]', str)
if match:
return match.start()
print("第五提示:尚未找到汉字,程序出错,即将退出")
sys.exit()
# 获取文件夹的最大层级数,返回列表tiersList
def getTiersList(self, linesList):
for i in linesList:
tier = self.getChineseIndex(i)
if tier not in self.tiersList:
self.tiersList.append(tier)
self.tiersList = sorted(self.tiersList) # 记得排个序
# 获取上一级文件夹路径,返回字符串upperPathStr
def getUpperPath(self, tiersList, InvalidNum, foldersList_catch):
index = tiersList.index(InvalidNum)
for i in reversed(foldersList_catch):
# print(list(i.keys())[0])
if list(i.keys())[0] == self.tiersList[index - 1]:
return i[self.tiersList[index - 1]] # 返回上一级文件夹路径
# 获取文件夹的所有路径,返回列表folderList
def getFolderList(self, linesList, forderPath):
self.getTiersList(linesList)
# print(self.tiersList)
foldersList_catch = []
for i in self.linesList: # 核心开始
InvalidNum = self.getChineseIndex(i) # 获取这串字符串前的无效字符数
forderName = i[InvalidNum:] # 获取文件夹的名字
for j in range(len(self.tiersList)):
if InvalidNum == self.tiersList[j]:
if foldersList_catch == []:
if j == 0:
# 将本行信息作为一个字典存入foldersList_catch
foldersList_catch.append({InvalidNum: str(forderPath) + r"\\" + forderName})
else:
if j == 0: # 说明要新建一个根文件夹了
# 将foldersList_catch存到folderList
self.folderList.extend(foldersList_catch)
# 将foldersList_catch重置
foldersList_catch = []
foldersList_catch.append({InvalidNum: str(forderPath) + r"\\" + forderName})
else:
# 根据tiersList推算出上一个InvalidNum,然后在foldersList_catch找到在上一级文件夹目录;
upperPathStr = self.getUpperPath(self.tiersList, InvalidNum, foldersList_catch)
# print(upperPathStr)
# 组建本级目录字符串,存放到foldersList_catch中;
foldersList_catch.append({InvalidNum: str(upperPathStr) + r"\\" + forderName})
self.folderList.extend(foldersList_catch)
# 创建文件夹,成功返回0,失败返回1
def createFolder(self, filePath, forderPath):
self.readTxt(filePath)
# print(self.linesList)
self.getFolderList(self.linesList, forderPath)
# 开始创建文件夹
for i in self.folderList:
folderPath = list(i.values())[0]
os.makedirs(folderPath, exist_ok=True)
print(f"目录 '{folderPath}' 创建成功(或已存在)")
def start_creation(self):
# 开始创建时的检查
if not self.txt_file_path:
QMessageBox.warning(self, "警告", "请先选择一个 TXT 文件")
return
if not self.folder_path:
QMessageBox.warning(self, "警告", "请先选择一个文件夹")
return
self.createFolder(self.txt_file_path, self.folder_path)
try:
# 模拟创建操作
# 创建成功后提示
QMessageBox.information(self, "创建成功", "文件和文件夹创建成功!")
except Exception as e:
QMessageBox.critical(self, "错误", f"创建过程中出现错误: {e}")
def main():
app = QApplication(sys.argv)
app.setStyle('Fusion') # 设置应用风格为 Fusion
window = MainWindow()
window.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
四、关于资料的获取
首先看一下都有哪些,我大致介绍一下:
为了方便资源管理,我仍然是放在公众号里,有需要可以回复“百度网盘整理神器”自取。
最后贴一个我们的公众号二维码:
最后祝我们,都有可以自由支配的时间。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 百度网盘的文件该怎么整理?不如试试这个整理工具
发表评论 取消回复