파일/폴더의 소유주는?
게시일: 2002/01/05 | 글쓴이: doa | 5208 번 | 프린트 | 메일

NT 4.0 서버 리소스 킷 - 보충 II은 파일/폴더의 소유주를 출력할 수 있는 SubInAcl를 포함하고 있다.

WhoOwns.bat은 파일/폴더와 소유주를 포함하는 CSV(Comma Seperated Value) 파일을 만든다. 옵션으로 폴더가 지정되면 소유주가 다른 파일/하위폴더의 목록을 열거할 수 있다.

사용형식
WhoOwns ""  "csvfile" [/n] [/f]  [/s]


여기서

매개변수 설명
"" 질의하려는 폴더나 파일. 로칼 드라이브의 폴더나 파일을 지정해야 한다.
"csvfile" 질의 결과를 저장할 CSV 파일.
/n 소유주가 다른 폴더내의 파일 목록을 출력.
/f 소유주가 다른 폴더내의 하위 폴더 목록을 출력.
/s 전 ""에대해 수행


WhoOwns.bat은 다음 내용을 포함한다:

@echo off 
if %1=="" goto syntax 
if not exist %1 goto syntax 
if %2=="" goto syntax 
if exist %2 del /q %2 
set subs= 
set nam= 
set fold= 
if /i "%3"=="/s" set subs=/s 
if /i "%4"=="/s" set subs=/s 
if /i "%5"=="/s" set subs=/s 
if /i "%3"=="/f" set fold=/f 
if /i "%4"=="/f" set fold=/f 
if /i "%5"=="/f" set fold=/f 
if /i "%3"=="/n" set nam=/n 
if /i "%4"=="/n" set nam=/n 
if /i "%5"=="/n" set nam=/n 
if "%3"=="" goto pok 
if /i "%3"=="/s" goto pok 
if /i "%3"=="/f" goto pok 
if /i "%3"=="/n" goto pok <br>
<br>
:syntax 
@echo Syntax error: WhoOwns ""  "csvfile" [/n] [/f]  [/s]  
goto endc <br>
<br>
:pok 
if exist %1\*.* goto folder 
if /i "%3"=="/s" goto syntax 
if /i "%3"=="/f" goto syntax 
if /i "%3"=="/n" goto syntax <br>
<br>
:folder 
set who1=%1 
set who1=%who1:"=% 
set who1=%who1%! 
set who2=%who1% 
set who2=%who2:\!=!% 
if not "%who1%"=="%who2%" goto syntax 
set who1=%1 
set who1=%who1:"=% 
set who2=%who1% 
set who2=%who2:.*=% 
if not "%who1%"=="%who2%" goto syntax 
set who1=%1 
set who1=%who1:"=% 
set who2= 
for /f "Tokens=1*" %%i in ('SubInAcl /file %1') do call :owner "%who1%" %2 %%i %%j 
if "%3"=="" goto endc 
if /i "%subs%"=="/s" goto subs 
if /i "%fold%"=="/f" goto nsfold 
if /i "%nam%"=="/n" goto nsnam 
goto endc <br>
<br>
:nsfold 
for /f "Tokens=*" %%i in ('dir %1 /b /ad') do call :preown "%who1%\%%i" %2  
if /i "%nam%"=="/n" goto nsnam 
goto endc <br>
<br>
:nsnam 
for /f "Tokens=*" %%i in ('dir %1 /b /a-d') do call :preown "%who1%\%%i" %2  
goto endc <br>
<br>
:subs 
if /i "%fold%"=="/f" goto ysfold 
if /i "%nam%"=="/n" goto ysnam 
goto endc <br>
<br>
:ysfold 
for /f "Tokens=*" %%i in ('dir %1 /b /ad /s') do call :preown "%%i" %2  
if /i "%nam%"=="/n" goto ysnam 
goto endc <br>
<br>
:ysnam 
for /f "Tokens=*" %%i in ('dir %1 /b /a-d /s') do call :preown "%%i" %2  
goto endc <br>
<br>
:preown 
for /f "Tokens=1*" %%i in ('SubInAcl /file %1') do call :owner %1 %2 %%i %%j 
goto end <br>
<br>
:owner 
if not "%3"=="/owner" goto end 
if "%who2%"=="" goto first 
if "%who2%"=="%4" goto end 
@echo %1,%4%2 
goto end <br>
<br>
:first 
set who2=%4 
@echo %1,%4%2 
goto end <br>
<br>
:endc 
set who= 
set who1= 
set who2= 
set subs= 
set nam= 
set fold= <br>
<br>
:end


TCP 성능 개선 SP2를 설치한 경우, Windows NT는 Van Jacobson의 고속 TCP 재전송, 복... (6295) 2002-01-05
NT 서버가 접속당 2048 파일로 제한되는 경우 Windows NT는 모든 파일 요청을 하나의 ... (4394)2002-01-05

QAOS.com에 게시된지 1년 이상된 자료와 관리자가 공개한 자료는 누구나 제한없이 읽을 수 있습니다.
그러나 QAOS.com의 자료를 퍼가는 것은 금지하고 있습니다.

이 정보가 유용하다고 생각되시면 QAOS.com과 많은 다른 사람들을 위해 퍼가기 보다는 링크로 알려주시기 바랍니다.

세상사는 이야기



RSS 구독 (익명 | 회원 | 강좌 | 포럼)
(C) 1996 ~ 2017 QAOS.com All rights reserved.