#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
|