Using Xcacls.vbs, I have scripted TreePerm.bat to enumerate the permission of
a drive or folder tree, using CSV format.
The syntax for using TreePerm.bat is:
TreePerm DriveOrFolder
Where DriveOrFolder is the drive or folder that you wish to fully enumerate, like C: or "C:\Documents and Settings".
The output is displayed on the console, but you can redirect it to a file.
Each line of output contains:
"Full Path to drive or folder","Type","User","Permission","Inheritance"
but any , in the data has been removed and any ( ) characters have been replaced with [ ] characters.
TreePerm.bat contains:
@echo off
if {%1}=={} @echo Syntax: TreePerm DriveOrFolder&goto :EOF
if not exist %1 @echo Syntax: TreePerm %1 does NOT exist.&goto :EOF
setlocal
set obj=%1
set XCACLS=""
for /f "Tokens=*" %%F in ('@echo XCACLS.VBS') do (
If "%%~dp$PATH:F" NEQ "" set XCACLS="%%~dp$PATH:F%%~F"
)
if %XCACLS% EQU "" @echo Syntax: TreePerm - XCACLS NOT in PATH&endlocal&goto :EOF
for /f "Skip=2 Tokens=*" %%a in ('cscript //nologo %XCACLS% %obj% /T /S^|find "\"') do (
set line=%%a
call :parse
)
endlocal
goto :EOF
:parse
if "%line:~0,10%" EQU "Directory:" set fPath="%line:~11%"&goto :EOF
if "%line:~0,6%" EQU "Owner:" set fPath=""&goto :EOF
set type="%line:~0,7%"
set type=%type: "="%
set Usr="%line:~9,23%"
set Usr=%Usr: =%
set Usr=%Usr: "="%
set Perm="%line:~33,22%"
set Perm=%Perm: =%
set Perm=%Perm: "="%
set Perm=%Perm:(=[%
set Perm=%Perm:)=]%
set Perm=%Perm:,=%
set Inherit="%line:~55%"
set Inherit=%Inherit: =%
set Inherit=%Inherit: "="%
set Inherit=%Inherit:,=%
@echo %fPath%,%type%,%Usr%,%perm%,%Inherit%