2013-04-16 3 views
0

나는 특정 하위 디렉토리에있는 파일의 수만 계산하도록하는 배치 스크립트를 사용합니다.서브 디렉토리에있는 파일을 다시 계산하는 스크립트

나는 다양한 프로젝트 (300+)가있는 디렉토리 트리가 있으며 reocurring 하위 디렉토리에있는 파일의 양만 찾고 있습니다.

현재 mtee (cmd 출력을 txt 파일로 되돌리려는 작은 프로그램) 및 dir을 사용하여 subdir을 계산하고 Excel에서 수동 검색을 수행합니다.

일괄 처리 스크립트로이 작업을 수행 할 수있는 방법이 있는지 궁금합니다.

예 : 모든 프로젝트에는 제안서 디렉토리와 하위 디렉토리 없음 제안이 있습니다. 나는 directorytree의 기초에서 노 이동 제안에있는 파일의 양을 계산하려면

답변

0

읽기 HELP FORHELP SET 다음 코드를 시도

@echo off 
setlocal enabledelayedexpansion 
for /r /d %%d in (*) do (
    call :countf "%%d\nogo" 
) 
goto :eof 

:countf 
set count=0 
for %%f in ("%~1\*") do (
    set /a count+=1 
) 
echo %~1 has !count! files 
goto :eof 
+0

감사합니다. 그러나 이것은 1 층 깊이가됩니다. dirs가 얼마나 깊은 지에 대한 범위는 다양합니다. 어떤 사람들은 1 개의 하위 디렉토리를 가지며, 다른 사람들은 3 또는 4를 가질 수도 있습니다. – user2285461

+0

아, 알겠습니다. 'FOR' 명령에'/ R'을 추가하도록 편집했습니다. –

0

이 시도 :

@echo off &setlocal 
set "startfolder=x:\proposals\no-go proposals" 

set /a counter=0 
for /r "%startfolder%" %%i in (*) do set /a counter+=1 
echo %counter% files found in "no-go proposals" . 
0
for /f %%i in ('dir /s/b/a-d "c:\project"^|find /c "\no-go-dirname\"') do ECHO nogocount=%%i 

음, 배치 파일 내의 줄입니다. 당신은 프롬프트에서 실행하는 경우, 각 %%%

는 파일 이름의 모든 디렉토리 목록을되고, /a-d하지 디렉토리 이름, /s를 포함한 하위 디렉토리의 기본 형태 /b, 그래서 아무 헤더 또는 트레일러. 찾는 상대와이 필터와 /c는 문자열 "\no-go-dirname\"를 포함하는 라인을 계산하고 많은 대안을 볼 수 %%i

+0

닫기, 그러나 "no-go proposals"폴더의 하위 디렉토리에있는 파일도 계산됩니다. FIND/C에 대한 파이프가 결과를 적절히 필터링하기 전에 잘 구성된 정규 표현식을 가진 다른 파이프를 FINDSTR에 추가합니다. – dbenham

+0

OP의 의견에서 필자는 그것이 필요한 것이라고 생각했습니다. 제외해야 할 하위 디렉토리의 하위 디렉토리에 파일이 있습니까? 더 많은 정보가 필요합니다. – Magoo

+0

동의, 더 많은 정보가 필요합니다. 나는 많은 no-go 폴더가 있다고 해석하고, OP는 다양한 no-go 폴더 내의 폴더만을 원한다. 이동 금지 폴더의 하위 디렉토리가 포함됩니다. 둘 중 하나가 유효 할 수 있습니다. – dbenham

0

좋은에 수를 할당하고, 그들 모두를 매끄럽게 그러나이 내 버전으로 작동합니다.

dir /s/b /a-d | find /c /v "" 

파일 수를 필요로하는 디렉토리에서이 명령을 실행하면 카운트가 반환됩니다.

관련 문제