basc 发表于 2024-9-24 18:24:11

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

求获取D盘下所有空目录,并将逐行写入txt,各位大哥们给个范例或思路。

顽固不化 发表于 2024-9-25 09:47:38

我水平有限,没看懂啥意思

绿色风 发表于 2024-9-25 10:15:42

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

holley 发表于 2024-9-25 10:56:10

#Include <File.au3>

; 设置要扫描的根目录
Local $rootDir = "D:\"
; 创建一个空数组来存储空目录
Local $emptyDirs
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
页: [1]
查看完整版本: 求获取D盘下所有空目录,并将逐行写入txt