배치

2014-04-06 2 views
0
를 통해 선택한 사용자가 소유 한 파일 검색 및 삭제

내 목표는이다 : 나는 모든 파일을 반복하고있어배치

@echo off 
for /f %%f in ('dir /b /s') do call :delete_file %%f 


GOTO :eof 

:delete_file 
(
    set var=%1 
    dir /q %var%| find "\User" 
) 

: - - 선택한 사용자 가 소유 한 파일을 찾아 그들에게

내 현재 코드 삭제 현재 디렉토리에서 다음 매개 변수 %% f (파일 경로)로 delete_file을 호출하고있다 : delete_file var를 첫 번째받은 매개 변수 (% 1 - 파일 경로)로 설정한다. 그리고 지금, 나는 소유자를 찾아 파일을 다시 파싱 할 것입니다 (/ q 매개 변수와 함께 - 소유자 출력). 변수에

dir /q %var%| find "\User" 

: 내 질문은, 어떻게 출력을 설정하는 것입니다? output이 null이면 파일은 선택된 사용자가 소유하지 않습니다. 그렇지 않으면이 파일을 삭제할 수 있습니다. 하지만 이것을 확인하는 방법은?

답변

0

텍스트와 일치하는 파일에 대해 del 명령을 반향 출력해야합니다.
만족스러운 경우 echo 키워드를 제거하고 실제 실행하십시오.

나는 또한 텍스트를 대소 문자를 구분하지 않도록했다. 당신의 dir /Q 명령의 출력 내 (I 스페인어 버전을 사용)과 동일하지 않은 경우

@echo off 
for /f %%f in ('dir /b /s /a-d') do (
    dir /q "%%f"| find /v ":\" |find /i "%computername%\User">nul && echo del "%%f" 
) 
0
@echo off 
setlocal EnableDelayedExpansion 

for /F "skip=3 tokens=6*" %%a in ('dir /S /Q /A-D') do (
    set "owner=%%a" 
    if "!owner:%COMPUTERNAME%\User=!" neq "!owner!" ECHO del "%%b" 
) 

은 아마 당신은

... tokens=6* 부분을 조정해야