2017-05-04 5 views
0

현재 'Avid MediaFiles'라는 디렉토리에있는 모든 파일/하위 폴더를 찾고 모든 권한을 부여하고 결과를 텍스트 파일로 출력하는 스크립트가 있습니다.특정 폴더에 대한 일괄 스크립트 사용 권한 부여

cd /d Y:\UserWorkspaces 
FOR /D /r %%g in ("Avid MediaFiles*") DO icacls "%%g" /grant "Administrators":(OI)(CI)F /T >> Avid_Permissions_Fixed.txt 

그것의 유일한 문제는,이 실행 된 후에는 관계없이 자신의 권한 상태의 모든 파일/폴더로 해결 이전에 고정 된 경우에도 사람이다. 이상적으로 나는 이미 모든 권한을 가진 것들을 고치고 그렇지 않은 것들을 바꾸는 조건을 덧붙이고 싶습니다. 배치 스크립트만으로 실현 가능합니까?

답변

0

가능하지만 스크립트가 상당히 복잡합니다.
허가를 확인할 이유가 없어야합니다. 설정되어 있다면 다시 설정해도 아무런 해가되지 않습니다.

icacls . | find "Administrators:(OI)(CI)(F)" 
if errorlevel 1 echo Doesn't have this permission 

을하지만 정확히 아니라면 (OI) (CI) (F), 당신은 위양성이있을 것이다 :
이 같은 특정 권한을 확인할 수 있습니다.

/T을 없애고 각 폴더와 파일을 반복해야 할 것입니다. 전체 icacls를 훨씬 더 어렵게 파싱하지 않으려는 경우 ./T 출력 구조.

아마도 다른 문제가있을 수 있습니다. 정확히 무슨 일이 일어나고 있는지 알아보십시오.
당신이 그 폴더에 특정 파일/폴더에 대한 특정 권한이 필요하지 않으며, 모든 파일/폴더가있는 경우 그 상속 후 간단한
FOR /D %%g in ("Y:\UserWorkspaces\Avid MediaFiles*") DO icacls %%g /reset /T
일을해야 켜져있는 경우. 권한이 제한된 위치에서 폴더로 이동 한 파일에 대한 사용 권한을 수정합니다. 새 권한을 추가하지는 않지만 가능한 모든 권한을 제거합니다.

더 복잡한 것이 있으면 배치를 사용하는 것이 좋습니다. PowerShell은 문자열 파싱 오류의 위험없이 아주 효과적으로이 작업을 수행 할 수 있습니다. 한 루프에서 모든 ACL을 확인하고 다른 ACL을 수정하십시오.

btw. for /D /r은 없습니다. 아마도/r은 무시됩니다.