napisal som si skript na preberanie vlastnictva a modifikaciu pristupovych prav suboru alebo zlozky aj s celym jej podstromom.
- Kód: Vybrat vše
@ECHO OFF
IF "%~1"=="" GOTO Syntax
IF "%~2"=="" GOTO Syntax
:: Keep variables local
SETLOCAL EnableDelayedExpansion
:: Determine/Check File System Object Type/Existence
SET "_FSObjType="
FOR /F "tokens=1,2 delims=d" %%A IN ("-%~a1") DO IF "%%B" NEQ "" (
SET "_FSObjType=Folder"
) ELSE IF "%%A" NEQ "-" (
SET "_FSObjType=File"
)
:: Check UserName Existence
SET "_UserExist=no"
FOR /F "tokens=1* delims=" %%A IN ('net user "%~2"') DO (
IF "%%A" EQU "The command completed successfully." SET "_UserExist=yes"
)
IF "%_FSObjType%"=="" GOTO FSObjNotFound
IF "%_UserExist%"=="no" GOTO UserNotFound
IF "%_FSObjType%"=="Folder" (
ECHO "Directory"
ICACLS "%~1" /setowner "%~2" /C /T
ICACLS "%~1\*" /reset /C /T
ICACLS "%~1" /inheritance:r /grant:r "Administrators:(OI)(CI)F"
ICACLS "%~1" /grant:r "SYSTEM:(OI)(CI)F" /C /T /grant:r "Administrators:(OI)(CI)F" /C /T /grant:r "Authenticated Users:(OI)(CI)M" /C /T /grant:r "Users:(OI)(CI)RX" /C /T
) ELSE (
ECHO "NonDirectory"
ICACLS "%~1" /setowner "%~2" /C
ICACLS "%~1" /reset /C
ICACLS "%~1" /grant:r SYSTEM:F /grant:r Administrators:F /grant:r "Authenticated Users:M" /grant:r Users:RX
)
GOTO Done
:FSObjNotFound
ECHO.
ECHO Specified File System Object %~1 was not found^^!
ECHO Please verify it and correct accordingly.
ECHO.
IF "%_UserExist%"=="yes" GOTO Done
:UserNotFound
ECHO.
ECHO Specified User %~2 was not found^^!
ECHO Please verify it and correct accordingly.
ECHO.
:Done
ENDLOCAL
GOTO :EOF
:Syntax
ECHO.
ECHO ChangeOwnerModifyDACL.cmd, Version 1.0 for Windows NT
ECHO Change Owner of and Modify DACL for specified File or Folder.
ECHO.
ECHO Notes: File or Folder must be specified as a first parameter of the script.
ECHO User Name of the new Owner must be specified as a second parameter of the script.
ECHO Specified path can be absolute or relative (to script location).
ECHO.
ECHO Written by Subdivider
Fungovat to funguje, ale u podadresarov su duplicitne permissions, teda ostali tam aj stare... Viac ukaze obrazok...
Dalsim problemom samozrejme je, ze v takejto forme bude skript asi fungovat iba pre anglicku verziu windows, to ale teraz vobec neriesim...
Moze niekto skuseny poradit, co robim v tom skripte zle? Vopred vdaka za konstruktivne komentare!