답변:
당신이 그것을하고 싶다면 cmd
다음은 사소한 방법입니다.
set count=0 & for %x in (*) do @(set /a count+=1 >nul)
echo %count%
그것은 명령 줄을 가정합니다. 배치 파일에서
@echo off
setlocal enableextensions
set count=0
for %%x in (*) do set /a count+=1
echo %count%
endlocal
조금 더 좋은 일을합니다. 배치 파일에서 실행하면 결과가 표시되지 않으므로 명령 줄에서 직접 수행 >nul
하므로 배치를 삭제할 수 있습니다 set /a
. 또한 루프 의 %
부호는 for
두 배가되어야합니다.
사람들이 멋진 트릭을 시도하는 사례가 많이 find /c
있습니다. 수 매우 다양한 물건이 손상 될 수 있습니다로, 그주의.
흔한 실수:
를 사용 find /c /v
하여 파일 이름에 포함되지 않은 것을 찾으십시오 (예 :) ::
. 습관. 작업. 확실하게. 콘솔 창이 래스터 글꼴로 설정되면 해당 문자 조합을 얻을 수 있습니다 . 나는 같은 파일 이름에 문자를 포함 할 수 있습니다 :
, ?
등 다음이 끊어집니다 정상적인 ASCII 대응으로 전환 얻을 것이다 예를 들어 자신의 전체 폭 변종이다. 정확한 카운트가 필요하면 시도하지 마십시오.
항상 파일 이름에 포함 된 find /c
것을 사용 하고 찾아보십시오 . 분명히 점 ( )은 좋지 않은 선택입니다. 또 다른 대답은.
dir /a-d | find /c ":"
이것은 사용자의 로케일에 관한 몇 가지 사항을 가정하지만, 모든 것이 사실이라고 보장하는 것은 아니며 (문제에 대해 상세하게 의견을 남겼습니다) 하나의 결과를 너무 많이 반환합니다.
일반적으로, 당신이 사용하려는 find
에 dir /b
상처가 멀리 아닌 모든 파일 이름 물건과 피합니다 그런 식으로 오류를 fencepost있다.
따라서 우아한 변형은 다음과 같습니다.
dir /b /a-d | find /c /v ""
먼저 모든 파일 이름을 한 줄씩 출력합니다. 그런 다음 비어 있지 않은 해당 출력의 모든 줄을 계산하십시오. 파일 이름은 비워 둘 수 없기 때문에 (내가 뭔가를 누락시키지 않으면 유니 코드는 테스트에 따라 이것을 트립하지 않습니다).
dir /b /a-d | find /c /v ""
%count%
구문 분석 시간에 확장 된 이후 아마도 실패 할 것입니다 .
다음과 같은 질문을 받으십시오. http://technet.microsoft.com/en-us/library/ee692796.aspx
폴더의 항목 수 계산
글쎄, 당신이 아는 것 : 태양이 드디어 나오는 것처럼 보이므로 우리가 갈 시간이 거의 다되었습니다. 그러나 시작하기 전에 Get-ChildItem cmdlet을 사용한 마지막 요령을 보여 드리겠습니다. 때로는 폴더의 파일에 대해 많이 알 필요가 없습니다. 실제로 알아야 할 것은 특정 폴더에서 찾을 수있는 파일 수 (있는 경우)입니다. 폴더의 파일 수를 빠르게 계산하는 방법은 다음과 같습니다.
(Get-ChildItem C:\Scripts).Count
우리 여기서 뭐 해요? 우리는 단순히 Get-ChildItem을 사용하여 C : \ Scripts 폴더에있는 모든 항목의 컬렉션을 반환합니다. 컬렉션이기 때문에 Count 속성의 값을 에코하여 컬렉션의 항목 수를 알려줍니다. 괄호 사용에 유의하십시오. Windows PowerShell이 먼저 컬렉션을 가져 와서 해당 컬렉션의 Count 속성 값만 에코하도록하기 위해 Get-ChildItem 명령을 괄호로 묶습니다.
그리고 Get-ChildItem을 호출 할 때 필터를 포함 할 수 있습니다. C : \ Scripts 폴더에 몇 개의 .PS1 파일이 있는지 알아야합니까? 좋아요-도크 :
(Get-ChildItem C:\Scripts -filter "*.ps1").Count
참고로 .. "powershell count files"를 봤습니다.
(Get-ChildItem -recurse -filter "*.ps1").Count
dir
하단에 총 파일 수를 제공합니다.
dir > file
.. 내가 미스 POSIX 아
dir > file
Windows에서 작동하지 않는 이유 는 무엇입니까? 출력 리디렉션은 마법이 아닙니다.
dir | grep (something)
화면상의 쓰기 속도가 느려지고 모든 것이 느려지는 것을 피할 수 있습니다.
내가 찾은 가장 빠른 방법은 PS 콘솔에서 다음을 실행하는 것입니다.
[System.IO.Directory]::GetFiles($path).Count
여기서 $ path는 로컬 경로 또는 UNC 공유입니다.
dir / B 출력 (디렉토리 포함)에서 행을 계산하십시오.
dir /B | find /c /v "~~~"
파일을 세지 않고 (더러워지지 않음) :
dir /A-D /B | find /c /v "~~~"
인터넷에서 이것을 찾았 습니다.
dir /a-d | find /c ":" > NUMfiles.###
set /p count=<NUMfiles.###
echo %count%
나는 테스트했고 작동하는 것 같습니다.
dir
명령은 파일 이 아닌 콜론이있는 줄을 포함하기 때문에 어떤 경우에도 하나씩 해제됩니다 . (2) 콜론을 포함하기 위해 시간 형식에 의존하므로 반드시 그럴 필요는 없습니다. (3) 콜론을 포함 하지 않는 숫자 형식에 의존하며 반드시 콜론을 포함 할 필요는 없습니다. 또한 여기에서 파일을 처리하는 것은 불필요하며 쓰기 액세스 권한이없는 경우 작동하지 않습니다.
위의 Trevoke 's PowerShell 응답을 사용하는 사람들을위한주의 사항 ( Windows 명령 프롬프트 : 현재 디렉토리의 모든 파일 수를 얻는 방법은 무엇입니까? ) : 의도적으로 Get-ChildItem에서 반환하는 컬렉션의 Count 속성을 에코하면 잘못된 결과를 줄 수 있습니다 Count 속성이 배열에서만 사용할 수 있기 때문입니다. Get-ChildItem에서 2 개 미만의 항목을 반환하면 결과는 스칼라이며 .Count는 아무것도 반환하지 않습니다. 이 문제를 해결하려면 @ (Get-ChildItem C : \ Scripts) .Count와 같이 명시 적으로 배열로 캐스트하십시오.
자세한 내용은 http://connect.microsoft.com/PowerShell/feedback/details/354672/get-childitem-count-problem-with-one-file 또는 http://www.vistax64.com/powershell/266379를 참조 하십시오 . -get-childitem-count-not-working-one-file.html .
물론 일할 것입니다
서버에 무언가를 설치하지 않고 워크 스테이션에 powershell을 설치하지 않으면 다음을 수행 할 수 있습니다.
(gwmi -computer theserver -query "select *from cim_datafile where path = '\\'").count
이 명령은 모든 파일 (시스템 및 숨겨진 파일 포함)을 제공하며 powershell이 컴퓨터에있는 경우 앞에서 언급했듯이 간단하게 수행 할 수 있습니다
(GCI c:\*.*).count
를 포함하지 않으면 . 모든 파일과 모든 디렉토리의 수를 얻게됩니다. 숨겨진 파일과 시스템 파일은 모두 포함하기 위해 -force를 추가해야합니다.
한 번만 이것을 사용하면 dir을 사용하고 싶습니다. 그렇지 않으면 C # 응용 프로그램으로 내 롤링을 고려할 것입니다 .VBScript 또는 PowerShell도 실행 가능하지만 가장 친숙하기 때문입니다.
(그런데-cmd.exe를 사용하는 경우 DOS가 아닙니다)
attrib을 사용하여 파일 수를 얻을 수 있다고 생각합니다.
attrib.exe /s /D *.*|find /c /v "" >> filecount.txt
이렇게하면 현재 디렉토리에 filecount.txt라는 파일이 생성되고 현재 디렉토리에있는 파일 및 폴더 수 (새로 작성된 파일 포함)가 생성됩니다. 당신은 변경할 수 있습니다
*.*
에
<full_path>\*.*
특정 디렉토리의 파일 수를 얻기 위해. 폴더를 계산하지 않으려면 "/ D"옵션을 제거하십시오. "/ s"옵션은 지정된 경로의 모든 디렉토리에있는 파일을 처리합니다. 따라서 지정된 경로에 파일 만 있고 하위 폴더에 파일을 포함하지 않으려면 제거하십시오.
예를 들어 C : \ 드라이브에 몇 개의 파일이 있고 하위 폴더가 아닌 파일을 찾으려면 다음 명령을 사용하십시오.
attrib.exe C:\*.* | find /c /v "" >> filecount.txt
나는 비슷한 것을하고 있으며 이것은 많은 파일에서 즉시 작동합니다.
Setlocal enabledelayedexpansion
Dir /A | find "File(s)" >tmp
For /F "tokens=1" %%i in (tmp) do set n=%%i
Del tmp
If !n! GEQ 10 echo Too many files in directory.
find
하는 것은 좋은 생각이 아닙니다. 자세한 내용은 허용 된 답변을 참조하십시오.