2013-03-22 5 views
5

폴더 이름에 "삭제됨"을 포함하지만 "완료"라는 폴더에없는 모든 폴더를 나열하는 스크립트를 원합니다. exampel를 들어폴더를 나열하지만 특정 폴더를 제외하는 일괄 스크립트

는 : 그것은 C:\temp에 있다면 폴더를 나열하고 있지만되지는 C:\temp\done

dir /s "C:\temp" | findstr "\deleted" 

단편 소설에 있다면 C:\temp\random_folder_name에 있다면, 모든 폴더가 "완료"및 콘텐츠를 이름을 제외 할 수 있습니다.

답변

7

의 디렉토리로 '완료'한 모든 이름을 생략 할 경우 \temp 부분을 제거해야합니다 .

의 Findstr/V는 경우를 많이에서

디렉토리/광고 디렉토리 만 표시됩니다 문자열 (Atrribut = 디렉토리)

dir /s /ad "C:\temp" | findstr "\deleted" | findstr /v "\done" 
+0

아 -하지만'done * '뿐만 아니라'done *'이라는 디렉토리와 파일도 제외됩니다. – Magoo

+0

/광고는 파일 이름을 제거합니다 - 내 오류. 그럼에도 불구하고'\ done '다음에'\'가 없으면 이것은'\ doneeverything'과도 일치 할 것입니다. OTOH는'\ done \'을 사용하여'c : \ were \ all \ done \ here'와 같은'done' 디렉토리 만 제외하지만'c : \ was \ not \ all '과 같이'\ done'을 끝내는 디렉토리는 제거하지 않을 것입니다 \ done'. 그렇게하기 위해서 여분의'findstr/i/e/v "\ done"을 추가해야합니다. – Magoo

+0

폴더 이름 제외 (파일 이름 만 사용) dir/a-d. (dir /? 참조) – Stephan

1
dir /s "C:\temp" | findstr "\deleted"|findstr /i /v "\temp\done\" 

법안

  • 에 맞게 또는 당신은 거의 다있는 경로
+0

예 -/i는 확실히 좋은 아이디어입니다! – Stephan

+1

"done"폴더가 특정 경로에 있으면 작업이 완벽합니다. 나는 "done"이라는 폴더를 어디서나,이 경우 C : \ Temp에 상관없이 제외하려고합니다. 그 점에 대해 명확하지 않은 경우 죄송합니다. – Tomas

0

를 포함하지 않는 모든 행을 반환 :

dir /b /s /aa <path> 

트릭을 수행합니다./b는 덜 자세한 출력을 나타내며/s는 재귀 (하위 디렉터리)를 나타내고/aa는 보관할 준비가 된 파일만을 나타냅니다. 이것은 일반적으로 정상적으로 생성 된 파일의 경우입니다 - 기본값은 on입니다!

관련 문제