Um mit dem Befehl CACLS die NTFS-Berechtigungen von Ordnern und Unterordnern, aber NICHT von Dateien auszulesen, hilft dieses kleine Script hier:

set laufwerk=%~d0
for /r %laufwerk% %%a in (.) do cacls "%%a" >> ACLs.txt

Die Datei muss nun in den Ordner gelegt werden, von dem an die Verzeichnisse durchsucht werden sollen. Von dort wird sie also dann gestartet, und legt auch innerhalb dieses Ordners das Logfile an.

Erklärung:

Der Befehl "set laufwerk=%~d0" sorgt dafür, dass immer das aktuelle Laufwerk, von welchem aus die Batch gestartet wird, in die Variable "laufwerk" gespeichert wird. In der Variable "laufwerk" steht nachher also z.B. "C:\". Der Punkt in der Klammer (.) gibt an, dass vom aktuellen Pfad an gesucht werden soll.