rmdir /s로만 삭제할 수 있는 기괴한 빈 디렉토리

rmdir /s로만 삭제할 수 있는 기괴한 빈 디렉토리

어떻게든 일반 rmdir. 원하는 만큼 여러 번 디렉토리를 복사하여 붙여넣을 수 있으며 다음 명령을 사용하면 사본도 삭제할 수 없는 상태로 유지됩니다 rmdir.

C:\testing>dir
 Volume in drive C is Local Disk
 Volume Serial Number is 8830-C25A

 Directory of C:\testing

20/07/2020  04:47 PM    <DIR>          .
20/07/2020  04:47 PM    <DIR>          ..
20/07/2020  01:25 PM    <DIR>          test
               0 File(s)              0 bytes
               3 Dir(s)  43,126,059,008 bytes free

C:\testing>rmdir test
Access is denied.

그것은 관리자 cmd 프롬프트에 있으며 디렉토리에 대한 모든 권한을 다음과 같이 설정했습니다 Full control.

여기에 이미지 설명을 입력하세요

모든 징후에 따르면 디렉토리는 완전히 비어 있습니다. 탐색기에서 숨김 파일과 시스템 파일을 켰는데 하위 디렉터리나 파일이 표시되지 않으며 a dir /a도 아무것도 표시하지 않습니다.

C:\testing\test>dir /a
 Volume in drive C is Local Disk
 Volume Serial Number is 8830-C25A

 Directory of C:\testing\test

20/07/2020  01:25 PM    <DIR>          .
20/07/2020  01:25 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  43,123,294,208 bytes free

attribdir에서 수행하면 아무것도 표시되지 않습니다.

C:\testing\test>attrib
File not found - C:\testing\test\*.*

또 다른 이상한 점은 내가 하려고 Access is denied노력할 때 나에게 알려주는 것입니다 .rmdirThe directory is not empty

또한 일부 프로그램에는 디렉토리에 대한 열린 핸들이 있을 수 있다고 생각했습니다(원본에서 복사하여 붙여넣은 후에는 그럴 가능성이 거의 없습니다). 글쎄, 내가 생각할 수 있는 모든 것(LockHunter, Process Explorer 핸들 검색, 리소스 모니터 핸들 검색 및 Sysinternals의 핸들 프로그램)을 확인한 후에 어디에서도 열려 있는 핸들을 볼 수 없었습니다.

그럼 지금 이쯤 되면 뭔가 문제가 있는 것 같죠? 글쎄요?정말이상한 점은 내가 (재귀 삭제)하면 rmdir /s test잘 삭제된다는 것입니다.

C:\testing>rmdir /s test
test, Are you sure (Y/N)? y

C:\testing>dir
 Volume in drive C is Local Disk
 Volume Serial Number is 8830-C25A

 Directory of C:\testing

20/07/2020  04:58 PM    <DIR>          .
20/07/2020  04:58 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  43,120,893,952 bytes free

이는 실제로 내부에 무언가가 있음을 의미합니다 test. 뭐가 될수 있었는지? 나는 지금까지 내가 한 어떤 것도 나에게 유용한 것을 보여주지 않았기 때문에 정말 궁금합니다. 나는 rmdir test이 특정 디렉토리(또는 그 사본)에서 무엇이 실패하는지 알아낼 수 없습니다 .

그래서 내 공식적인 질문은: 이 기괴한 행동의 원인은 무엇입니까?

답변1

댓글에 있는 @LPChip의 훌륭한 작업 덕분에 이제 답을 얻었습니다.

attrib폴더 자체( )에 대한 작업을 수행하면 attrib test해당 폴더에 읽기 전용 속성이 있음이 드러났습니다.

C:\testing>attrib test
     R               C:\testing\test

읽기 전용 속성을 제거하면 폴더를 삭제할 수 있습니다.

C:\testing>attrib -r test

C:\testing>rmdir test

C:\testing>dir
 Volume in drive C is Local Disk
 Volume Serial Number is 8830-C25A

 Directory of C:\testing

23/07/2020  09:03 AM    <DIR>          .
23/07/2020  09:03 AM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  43,965,960,192 bytes free

새 폴더를 만들고 읽기 전용 속성을 추가하면 문제가 정확하게 재현됩니다.

C:\testing>md test2

C:\testing>attrib +r test2

C:\testing>rmdir test2
Access is denied.

이것이 rmdir폴더 제거를 방해하는 이유이지만 두 가지 질문이 남아 있습니다. 1) 작동하지 않을 rmdir /s때 왜 작동 하는지 rmdir, 2) 속성 대화 상자에서 읽기 전용 확인란을 변경해도 뚜렷한 효과가 없는 이유는 무엇입니까?

좀 더 파고들었고배운Windows의 폴더 속성 대화 상자에서는 폴더 자체의 읽기 전용 속성을 설정할 수 없으며 해당 내용만 설정할 수 있습니다. 나는 이전에 텍스트를 가정했습니다."폴더에 있는 파일에만 적용됩니다""혼합" 상태 설정은 콘텐츠에만 적용되고 "켜기"는 모든 것에 적용된다는 의미입니다. (그렇게 생각하지는 않았습니다.) 실제로는 "켜기" 또는 "끄기" 상태로 설정하면 선택한 상태를 내용에만 적용하고 "혼합" 상태는 "모든 것을 그대로 둡니다"를 의미합니다.

여기에 이미지 설명을 입력하세요

이는 속성 대화 상자에서 본 혼란스러운 동작을 설명하지만, 왜 작동하는지 설명 하지 rmdir않습니다 . 글쎄요... 모르겠어요. 이전 버전과의 호환성, Unix 호환성, 버그, 의도적인 디자인 결정일 수 있습니다(사용에는 결국 "확실합니까?"라는 메시지가 표시됩니다). 이 행동에 대한 언급을 찾을 수 없습니다. 더 많은 정보가 있는 사람이 있으면 알려주시면 답변에 추가하겠습니다.Access is deniedrmdir /s/s

관련 정보