找回密码
 加入
搜索
查看: 178|回复: 3

求获取D盘下所有空目录,并将逐行写入txt

[复制链接]
发表于 2024-9-24 18:24:11 | 显示全部楼层 |阅读模式
求获取D盘下所有空目录,并将逐行写入txt,各位大哥们给个范例或思路。
发表于 2024-9-25 09:47:38 | 显示全部楼层
我水平有限,没看懂啥意思
发表于 2024-9-25 10:15:42 | 显示全部楼层

1 ,获取D盘下所有的空目录,包括子目录?那子目录的父目录算是空目录不?
2 ,写入txt那意思是说,将空目标路径写入到一个txt文本中,还是说在每个空目录下面写一个txt文件?

发表于 2024-9-25 10:56:10 | 显示全部楼层
#Include <File.au3>

; 设置要扫描的根目录
Local $rootDir = "D:"
; 创建一个空数组来存储空目录
Local $emptyDirs[1]
Local $count = 0

; 调用递归函数
_getEmptyDirs($rootDir)

; 将结果写入 TXT 文件
Local $filePath = "D:\empty_dirs.txt"
FileDelete($filePath) ; 如果文件已存在,先删除
FileWrite($filePath, ""); ; 创建空文件

For $i = 1 To $count
    FileWrite($filePath, $emptyDirs[$i] & @CRLF) ; 将空目录逐行写入文件
Next

; 函数:递归查找空目录
Func _getEmptyDirs($dir)
    Local $handle = FileFindFirstFile($dir & "*")
    If $handle = -1 Then Return

    While True
        Local $file = FileFindNextFile($handle)
        If @error Then ExitLoop

        If StringInStr($file, ".") = 0 Then ; 只处理目录
            Local $subDir = $dir & $file & ""
            _getEmptyDirs($subDir) ; 递归调用

            ; 检查目录是否为空
            Local $subHandle = FileFindFirstFile($subDir & "*")
            If $subHandle = -1 Then ; 如果目录为空
                $count += 1
                ReDim $emptyDirs[$count + 1] ; 动态扩展数组
                $emptyDirs[$count] = $subDir ; 将空目录添加到数组
            EndIf

            ; 关闭子句柄
            If $subHandle <> -1 Then FileClose($subHandle)
        EndIf
    WEnd

    ; 关闭主句柄
    FileClose($handle)
EndFunc
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-21 18:19 , Processed in 0.074079 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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