cmd에 와일드 카드 버그가 있습니까? [복제] 폴더의 파일 : a.j ab.jp abc.jpg abcd.jpeg dir

이 질문에는 이미 답변이 있습니다.

폴더의 파일 :

a.j
ab.jp
abc.jpg
abcd.jpeg

dir 명령 결과 :

Command       Result (Files shown)
----------    --------------------
dir ?.*       a.j
dir ??.*      a.j, ab.jp
dir ???.*     a.j, ab.jp, abc.jpg
dir ????.*    a.j, ab.jp, abc.jpg, abcd.jpeg

그래서 우리는 단일 ?문자 “0 또는 1 문자”를 볼 수 있습니다 .

더 많은 dir명령 결과 :

Command       Result (Files shown)
----------    --------------------
dir *.?       a.j
dir *.??      a.j, ab.jp
dir *.???     a.j, ab.jp, abc.jpg, abcd.jpeg --> What is this?!
dir *.????    a.j, ab.jp, abc.jpg, abcd.jpeg

세 번째 명령에서 왜 ???표시 jpeg됩니까? 설명 할 수 있습니까? 이 버그는 cmd에 있습니까?



답변

세 개의 물음표가 짧은 버전의 파일 이름 확장자와 일치하기 때문에 발생합니다. 용도

dir /x

짧은 버전의 파일 이름을 표시하고 작업합니다.


답변

세 자보다 긴 확장명 문제와 관련하여 : 이것은 짧은 파일 이름이 생성되는 방식으로 인해 발생합니다. Win95TruncatedExtensions레지스트리에서 설정하여이 문제를 해결할 수 있습니다 .

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"Win95TruncatedExtensions"=dword:00000000

NTFS 및 FAT에서 8.3 명명 규칙을 사용하여 새 파일의 파일 이름을 생성할지 여부를 지정합니다.

이 항목의 값을 1로 설정해도 기존 파일 이름 확장자는 변경되지 않으며 찾기, 파일 관리자 또는 Windows 탐색기에서 이러한 확장자가 표시되거나 관리되는 방식도 변경되지 않습니다. 그러나 NTFS 및 FAT는 새 파일의 짧은 이름을 생성하고 파일 이름 확장명의 세 번째 문자를 자릅니다.

기본값은 1

여기에 이미지 설명을 입력하십시오

그러나 이것은 새로 생성되거나 복사 된 파일에만 영향을 미칩니다.

(하드 디스크의 모든 파일을 복사 할 수 있습니다. Windows 시스템을 설치할 때 첫 번째 조치 중 하나로이 레지스트리 설정을 수행해야합니다.)


답변

명령 프롬프트는 짧은 파일 이름 시스템을 사용합니다. 즉, 파일이 포인트 이전에 8자를 초과하면 처음 6 개가 + ~ 1로 사용됩니다. 에서 뒤에 4 자 이상을 사용하는 경우에도 마찬가지입니다. 그런 다음 확장자의 처음 3자를 사용하고 파일 이름을 다르게 지정합니다 (처음 6 + ~ 1). 따라서 .jpeg파일이 명령 프롬프트에 표시되므로 ??????~1.jpe일치합니다.*.???

dir /x파일 이름이 짧은 파일을 보는 데 사용 하십시오.


답변