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

C#如何仅通过部分名称(客户编号)判断文件夹是否存在

需求背景

我已经实现了基于两个文本框输入创建客户文件夹的功能:

  • Textbox1 用于输入4位格式的客户编号 XXXX
  • Textbox2 用于输入客户名称
    生成的文件夹命名规则为「客户编号+空格+客户名称」,该逻辑目前运行正常。
    现在需要新增前置校验:创建文件夹前,仅通过输入的客户编号 判断根目录下是否存在同编号前缀的文件夹(所有存量文件夹都符合「客户编号+客户名称」的命名规则),避免同个客户编号重复创建文件夹。
现有可运行代码
{
    string no = textBox1.Text;
    string client = textBox2.Text;
    string carpeta = @"C:\" + no + " " + client;
    string sourcePath = @"C:\main";
    string destinationPath = @"C:\" + no + " " + client;
    textBox1.Clear();
    textBox2.Clear();

    try
    {
        
            if (Directory.Exists(carpeta))
            {
                DialogResult y;
                y = MessageBox.Show("Folder already exists\nDo you want to open it?", "AE.", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (y == DialogResult.Yes)
                {
                    System.Diagnostics.Process.Start(@"C:\" + no + " " + client);
                }
                else
                {
                    Close();
                }
            }
            else
            {
                DialogResult x;
                x = MessageBox.Show("The folder doesn't exist\nWant to create a folder?." + "\n" + no + " " + client, "AE.", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
                if (x == DialogResult.Yes)
                {
                    Directory.CreateDirectory(carpeta);
                    FileSystem.CopyDirectory(sourcePath, destinationPath, UIOption.AllDialogs);
                    System.Diagnostics.Process.Start(@"C:\" + no + " " + client);
                }
                else
                {
                    Close();
                }
            }              
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error:" + ex.Message);
    }
}
代码修改方案

你只需要在获取到no变量值之后,原有文件夹存在性判断之前,新增一段同编号前缀检索逻辑即可:

// 新增逻辑开始
// 只检索C盘根目录下、前缀为当前客户编号+空格的文件夹
string[] matchedFolders = Directory.GetDirectories(@"C:\", $"{no} *", SearchOption.TopDirectoryOnly);
if (matchedFolders.Length > 0)
{
    // 存在同编号文件夹,拦截创建,可自定义提示逻辑
    string existFolderName = Path.GetFileName(matchedFolders[0]);
    DialogResult res = MessageBox.Show($"已存在客户编号 {no} 对应的文件夹:{existFolderName}\n是否直接打开该文件夹?", "重复提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
    if (res == DialogResult.Yes)
    {
        System.Diagnostics.Process.Start(matchedFolders[0]);
    }
    Close();
    return;
}
// 新增逻辑结束

逻辑说明:

  • 通配符{no} *只会匹配名称以当前输入的客户编号开头、后面紧跟空格的文件夹,避免出现编号前缀重合的误判(比如输入123不会匹配到编号1234的文件夹)
  • SearchOption.TopDirectoryOnly指定只检索C盘根目录,不递归查子文件夹,性能更好
  • 如果有匹配的文件夹,你可以根据业务需要调整后续逻辑,比如直接提示不能创建,或者给用户打开已有文件夹的选项

内容的提问来源于stack exchange,提问作者Víctor Rodríguez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:54:04