吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 350|回复: 8
收起左侧

[资源求助] 大佬求助!求一个在指定文件夹里删除一项的子文件夹的代码

[复制链接]
chien9 发表于 2024-9-24 23:01
25吾爱币
本帖最后由 chien9 于 2024-9-24 23:07 编辑

我需要在指定文件夹里删除一项的子文件夹的代码,如D:/a路径中将a中所有只有一项的文件夹进行删除

最佳答案

查看完整内容

链接:https://ansky.lanzouo.com/iphWF2ass6ch [mw_shl_code=csharp,true]using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Windows.Forms; namespace DeleteForm { public partial class Form1 : Form { public Form1() { ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

陈总ing丶 发表于 2024-9-24 23:01
链接:https://ansky.lanzouo.com/iphWF2ass6ch

[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace DeleteForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnDelete_Click(object sender, EventArgs e)
        {
            string path = txtPath.Text.Trim();
            if (Directory.Exists(path))
            {
                DeleteSingleItemFolders(path);
                MessageBox.Show("处理完成!");
            }
            else
            {
                MessageBox.Show("指定的路径不存在!");
            }
        }

        private void DeleteSingleItemFolders(string directory)
        {
            // 获取所有子文件夹
            var dirs = Directory.GetDirectories(directory);

            foreach (var dir in dirs)
            {
                // 获取子文件夹中的内容
                var subDirs = Directory.GetDirectories(dir);
                var files = Directory.GetFiles(dir);

                // 如果只有一个子文件夹并且没有文件,则删除
                if (subDirs.Length == 1 && files.Length == 0)
                {
                    Directory.Delete(dir, true); // true 表示递归删除
                    MessageBox.Show($"删除文件夹: {dir}");
                }
                else
                {
                    // 递归调用,检查下一级文件夹
                    DeleteSingleItemFolders(dir);
                }
            }
        }
        }
}
kittykerry 发表于 2024-9-24 23:54
楼主试试这个,用GPT问出来的:用记事本复制粘贴代码并保存,命名delete_folders.bat,之后双击bat文件运行

@echo off
set "folder=D:\a"
for /d %%i in ("%folder%\*") do (
    rem 初始化计数器
    set /a count=0
    rem 统计子文件夹中的项目数量
    for /f %%j in ('dir /b "%%i"') do set /a count+=1
    rem 如果项目数量等于1,则删除该子文件夹
    if %count%==1 (
        echo Deleting folder: %%i
        rmdir /s /q "%%i"
    )
)
pause

代码注释:
set "folder=D:\a":指定目标文件夹路径为 D:\a,根据实际需要请自行改动。
for /d %%i in ("%folder%\*") do:遍历 D:\a 路径下的所有子文件夹。
for /f %%j in ('dir /b "%%i"') do:列出子文件夹中的所有文件和文件夹,逐项处理。
set /a count+=1:对每个项目进行计数,判断文件夹内项目数量。
if %count%==1:如果项目数量等于 1,执行删除操作。
rmdir /s /q "%%i":使用 rmdir 递归删除该文件夹及其内容,/s 表示删除所有子文件夹和文件,/q 表示安静模式,不询问确认。
 楼主| chien9 发表于 2024-9-25 08:46
kittykerry 发表于 2024-9-24 23:54
楼主试试这个,用GPT问出来的:用记事本复制粘贴代码并保存,命名delete_folders.bat,之后双击bat文件运行 ...

打不开哥,不管是ansi编码还是utf8编码都打不开
 楼主| chien9 发表于 2024-9-25 11:28
陈总ing丶 发表于 2024-9-25 08:59
链接:https://ansky.lanzouo.com/iphWF2ass6ch

[mw_shl_code=csharp,true]using System;

大佬,这个怎么用
luxingyu329 发表于 2024-9-25 12:31
chien9 发表于 2024-9-25 11:28
大佬,这个怎么用

下载蓝奏里面的软件使用呀
 楼主| chien9 发表于 2024-9-25 15:12
luxingyu329 发表于 2024-9-25 12:31
下载蓝奏里面的软件使用呀

软件里是个输入栏啊,我该输入什么大佬,不好意思我太菜了
luxingyu329 发表于 2024-9-25 17:04
chien9 发表于 2024-9-25 15:12
软件里是个输入栏啊,我该输入什么大佬,不好意思我太菜了

输入路径就可以了,要做好备份
 楼主| chien9 发表于 2024-9-25 18:28
luxingyu329 发表于 2024-9-25 17:04
输入路径就可以了,要做好备份

谢谢哥,我懂了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-12 14:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表