Полагаю, у вас либо нет подкаталогов, либо ваш код для их поиска работает неправильно. Итак, ваш код пытается объявить массив длиной 0
.
Добавьте эту строку прямо перед строкой, в которой вы получили ошибку.
MsgBox(0, "Value of $countDirs", $countDirs)
UPDATE
_FileListToArray
возвращает только имена файлов / папок, а не полный путь. Вызов FileGetAttrib
возвращает пустую строку, потому что он не находит файл / папку. Измените ваш If
, включив в него родительский путь с именем файла.
If StringInStr(FileGetAttrib($dir & "\" & $allOfDir[$i]), "D") Then