色々実験してみましたら,普通にCACLSで出来ました。
◎単にEveryoneを削除したい(チェックはついたまま)
→#5の方法もしくは,バッチの:MD_AND_CACLSを以下に変更。
---ここから---
:MD_AND_CACLS
For /F "usebackq eol=; tokens=1 delims=," %%i in (acl.txt) DO md %%i
For /F "usebackq eol=; tokens=1,2 delims=," %%i in (acl.txt) DO cacls %%i /e /g %%j
REM Everyoneのアクセス権を削除
For /F "usebackq eol=; tokens=1 delims=," %%i in (acl.txt) DO cacls %%i /e /r everyone
---ここまで---
◎Everyoneを削除して,チェックも外したい
→バッチの:MD_AND_CACLSを以下に変更。
---ここから---
:MD_AND_CACLS
For /F "usebackq eol=; tokens=1 delims=," %%i in (acl.txt) DO md %%i
REM Everyoneのアクセス権を削除
For /F "usebackq eol=; tokens=1 delims=," %%i in (acl.txt) DO cacls %%i /e /r everyone
For /F "usebackq eol=; tokens=1,2 delims=," %%i in (acl.txt) DO cacls %%i /e /g %%j
---ここまで---
上記は,
ディレクトリ作成→アクセス権設定→everyone削除
ディレクトリ作成→evryone削除→アクセス権設定
という違いでしかありません。
ただし後者においても,新たに設定したアクセス権が
一階層上のフォルダのアクセス権を完全に含む場合,
チェックがつきます。(多分そういう仕様)
例)
DIR_1…Use1:F,User2:C,Group1:F
|
|--DIR_2…Use1:F,User2:C,Group1:F,User3:F
| |
| |----DIR_2.1…Use1:F,User2:C,Group1:F
|
|--DIR_2…Use1:F,C,Group1:F,User3:F
この場合DIR_2にチェックがつく。
DIR2.1は一階層上のDIR_2のアクセス権を完全に含まない
(User3がない)のでチェックはつかない。
お礼
返信が遅れました。大変すみません。 バッチファイルの書き方など大変参考になりました。 本当にありがとうございます。