Windows 탐색기가 일반보기 및 검색보기에서 파일의 NTFS 압축 상태를 채색 할 수 있다는 것을 알고 있습니다.
NTFS 수준에서 압축되거나 압축되지 않은 파일을 구체적으로 필터링 / 검색하려면 어떻게해야합니까?
가급적이면 Windows XP 이상에서 작동하는 솔루션 (비스타와 그 이상을 위해 사용할 수있는 드라이버가없는 하드웨어 장치가 꽤 있음).
Windows Search는 너무 CPU 집약적이므로 솔루션이 필요하지 않습니다.
Windows 탐색기가 일반보기 및 검색보기에서 파일의 NTFS 압축 상태를 채색 할 수 있다는 것을 알고 있습니다.
NTFS 수준에서 압축되거나 압축되지 않은 파일을 구체적으로 필터링 / 검색하려면 어떻게해야합니까?
가급적이면 Windows XP 이상에서 작동하는 솔루션 (비스타와 그 이상을 위해 사용할 수있는 드라이버가없는 하드웨어 장치가 꽤 있음).
Windows Search는 너무 CPU 집약적이므로 솔루션이 필요하지 않습니다.
답변:
Windows XP는 압축 파일을 기본적으로 나열하는 방법을 제공하지 않으며 고급 검색 방법조차 이러한 작업을 위해 설계되지 않았습니다. 명령 프롬프트는 다음과 같이 구성됩니다.
cd /d "C:\Some folder"
compact | findstr /c:" 1 C"
그만큼 cd
명령은 단순히 대상 디렉토리로 이동하는 데 사용됩니다. 때 compact
명령이 매개 변수없이 실행되면 압축 세부 정보가있는 경우 모든 파일을 나열합니다. 그런 다음 출력을 다음으로 리디렉션하여 필터링 할 수 있습니다. findstr
. 가치있는 일인이 방법은 Windows 2000에서도 작동합니다.
그래도 결과는 매우 장황합니다. 추가 정보를 제거하려면 더 많은 작업이 필요합니다.
for /f "tokens=9,*" %A in ('"compact | findstr /c:" 1 C" "') do @dir /b "%A*%B" 2>nul
위의 명령은 압축 된 파일 이름 만 표시합니다. 그만큼 dir
명령은 위양성을 피하기 위해 파일 이름의 유효성을 검사하는 데 유용합니다 (예 : 문자열 1 C
그들의 이름으로).
사용할 수있는 추가 매개 변수는 다음과 같습니다.
/s
모든 하위 폴더에 명령을 적용합니다. /a
숨겨진 파일이나 시스템 파일을 표시합니다. 이 매개 변수는 다음과 같이 사용되어야합니다. compact
과 dir
필요한 경우 명령.
압축되지 않은 파일을 나열하려면 /v
매개 변수 findstr
명령을 사용하여 필터를 뒤집고 tokens
가치 8
(압축되지 않은 파일에는 C
마커. 문자열에 영향을 미칩니다. 토큰 화 ).
Windows 검색 쿼리는 간단한 텍스트 검색을 지원할뿐만 아니라 고급 속성 기반 쿼리 작업도 제공하는 고급 쿼리 구문 (AQS)에 지정됩니다.
AQS는 Windows 데스크톱 검색과 함께 처음 소개되었으며 나중에 Windows Vista로 개선되고 통합되었습니다. Windows 검색 . 너는 ~해야 해. 따로 설치 이전 운영 체제에서는.
다음 쿼리는 아카이브 속성이 설정되고 압축 된 모든 파일을 나열합니다. Windows XP, Vista 및 7에서 작동합니다. 테스트하지는 않았지만 Windows 8.x에서도 작동해야합니다.
System.FileAttributes:(2080)
영어 로켈에서 다음을 사용할 수도 있습니다.
attributes:(2080)
다음은 가장 유용한 값 목록입니다.
FILE_ATTRIBUTE_READONLY = 1
FILE_ATTRIBUTE_HIDDEN = 2
FILE_ATTRIBUTE_SYSTEM = 4
FILE_ATTRIBUTE_ARCHIVE = 32
FILE_ATTRIBUTE_COMPRESSED = 2048
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 8192
위의 예에서 나는 결합했다. FILE_ATTRIBUTE_ARCHIVE
과 FILE_ATTRIBUTE_COMPRESSED
: 32 + 2048 = 2080
.
논리를 사용하여 모든 조합을 검색 할 수 있습니다. OR
운영자. 예를 들어, 읽기 전용인지 아닌지 압축 된 파일을 검색하려면 다음을 수행하십시오.
System.FileAttributes:(2080 OR 2081)
검색 결과를 뒤집으려면 NOT
운영자:
System.FileAttributes:NOT(2080 OR 2081)
및 3,1415 게시 됨 Windows 탐색기를위한 멋진 솔루션 적어도 Windows 7 이상에서는 작동합니다 (Vista에서는 나중에 확인합니다).
따라서 XP 나 2003 같은 구형 Windows 버전의 경우 압축 된 파일이나 압축되지 않은 파일의 목록을 생성 할 수있는 명령 줄 솔루션을 연구했습니다.
Compact
: 멋지지만 출력물을 분석하기 어렵다. 첫 번째 아이디어는 콤팩트 Windows와 함께 제공됩니다.
실제로 파일을 나열 할 수 있습니다 (매개 변수에 공백이 있으면 큰 따옴표로 묶습니다).
compact [filemask] /a /s:[directoryname]
형식은 사람이 읽기 쉽지만 구문 분석하기는 쉽지 않습니다.
C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help\en\DRS41\wwhelp\wwhimpl\common\htmlinit3.htm
C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help\en\DRS41\wwhelp\wwhimpl\common\htmlpagenav.htm
...
C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help\en\DRS41\wwhelp\wwhimpl\common\html\imagessplash.jpg
C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help\en\DRS41\wwhelp\wwhimpl\common\imagestoolsbg.gif
...
C:\Program Files\VMware\Infrastructure\Virtual Infrastructure Client\Help\en\DRS41\wwhelp\wwhimpl\common\scriptsunidata.js
그래서 이름이 너무 길어지면 파일이나 디렉토리의 일부를 자릅니다.
# FindCompressed
: 좋은, 출력 첫 번째 / 마지막 줄을 박탈해야합니다.
Exodus Development는 명령 줄 도구를 작성했습니다. FindCompressed . 매개 변수가 없으면 압축 된 파일을 찾습니다. 와 더불어 -su
매개 변수를 사용하면 압축되지 않은 파일을 찾습니다. 넣다 [directoryname]
공백이 들어 있으면 큰 따옴표로 묶습니다.
FindCompressed.exe -su [directoryname]
FindCompressed
단점이 있습니다.이 행은 항상 #이 [directoryname] 인 출력을 시작합니다.
Recursive search of compact #.
다음과 같은 줄로 끝납니다.
Found # uncompressed files in # items examined.
이들 사이의 줄에는 압축되지 않은 파일 이름이나 압축 된 파일 이름의 전체 경로가 포함됩니다.
그것은 파싱하기 쉽습니다.