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

VB.NET WinForms:创建带唯一年份序列ID的文件夹

最优实现方案

核心思路是本地持久化存储序列值+动态生成符合规则的文件夹名,具体逻辑:

  • 用轻量JSON配置文件保存当前年份和对应序列值,实现程序关闭后数据不丢失
  • 点击按钮时执行以下步骤:
    1. 获取当前年份(YYYY格式)
    2. 读取配置文件,若文件不存在则初始化年份为当前年、序列为1;若年份与当前年不一致,重置序列为1
    3. 按{年份}{三位补零序列} {文本框内容}格式拼接文件夹名
    4. 在指定目录创建文件夹(处理文件夹已存在的异常)
    5. 更新配置文件中的序列值(+1)
代码片段(Python + Tkinter)

以下是可直接运行的示例代码:

import os
import json
from datetime import datetime
import tkinter as tk
from tkinter import messagebox

# 自定义配置文件路径
CONFIG_FILE = "folder_seq_config.json"
# 自定义文件夹创建根目录
TARGET_ROOT = "./generated_folders"

def load_sequence_config():
    """加载配置,返回年份和序列值"""
    if not os.path.exists(CONFIG_FILE):
        return {"current_year": datetime.now().year, "seq": 1}
    with open(CONFIG_FILE, "r", encoding="utf-8") as f:
        try:
            return json.load(f)
        except json.JSONDecodeError:
            return {"current_year": datetime.now().year, "seq": 1}

def save_sequence_config(config):
    """保存配置到文件"""
    with open(CONFIG_FILE, "w", encoding="utf-8") as f:
        json.dump(config, f, indent=2)

def handle_create_folder():
    """按钮点击事件逻辑"""
    suffix_name = folder_suffix_entry.get().strip()
    if not suffix_name:
        messagebox.showwarning("提示", "请输入文件夹后缀名称")
        return
    
    # 确保根目录存在
    os.makedirs(TARGET_ROOT, exist_ok=True)
    
    current_year = datetime.now().year
    config = load_sequence_config()
    
    # 跨年份自动重置序列
    if config["current_year"] != current_year:
        config["current_year"] = current_year
        config["seq"] = 1
    
    # 生成标准格式的文件夹名
    folder_full_name = f"{current_year}{config['seq']:03d} {suffix_name}"
    folder_full_path = os.path.join(TARGET_ROOT, folder_full_name)
    
    try:
        os.makedirs(folder_full_path, exist_ok=False)
        messagebox.showinfo("成功", f"文件夹已创建:\n{folder_full_path}")
        # 更新序列并保存配置
        config["seq"] += 1
        save_sequence_config(config)
    except FileExistsError:
        messagebox.showerror("错误", f"文件夹已存在:\n{folder_full_path}")

# GUI界面构建
app = tk.Tk()
app.title("批量文件夹生成工具")

tk.Label(app, text="文件夹后缀名:").pack(pady=6)
folder_suffix_entry = tk.Entry(app, width=35)
folder_suffix_entry.pack(pady=6)

create_btn = tk.Button(app, text="创建文件夹", command=handle_create_folder, width=15)
create_btn.pack(pady=12)

app.mainloop()
关键细节说明
  • 持久化保障:通过JSON文件存储序列状态,程序重启后自动读取最新计数
  • 年份适配:当年份变更时(如从2023到2024),序列自动重置为1,符合常规计数逻辑
  • 异常防护:处理空输入、文件夹已存在的情况,避免程序崩溃
  • 格式规范:用{seq:03d}实现序列的三位补零(如1→001、12→012)

内容的提问来源于stack exchange,提问作者Froste Stix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:24:26