무한 반복 디렉토리 트리를 제거하는 방법?


9

Windows 2003 파일 서버 중 하나에서 누군가 또는 다른 사용자가 일부 사용자의 홈 폴더 내에 무한 반복 디렉토리 트리를 생성하여 삭제할 수 없습니다.

당신은 이런 식으로 바람을 피 웁니다 :

D:\Student\2012\user.name\servername\student\2012\user.name\servername\student\2012\...

그리고 내가 말할 수있는 한 무한히 계속됩니다.

시스템에있는 시스템에서 디렉토리 트리를 삭제하려고하면 "파일 또는 폴더 삭제 오류 : 파일을 삭제할 수 없습니다 :"가 발생합니다. 네트워크 공유에 연결된 Windows 7 시스템에서 삭제하려고하면 "폴더 사용 중"오류가 발생합니다.

디렉토리 트리를 아래로 탐색하면 결국 열거 나 삭제할 수없는 디렉토리에 도달하지만 (오른쪽 클릭하면 표준 옵션이 나타나지 않는 경우) 다른 시스템의 공유에서 동일한 디렉토리를 열려고하면 열 수는 있지만 Windows 탐색기는 매우 느려집니다.

게시물 의 제안을 시도하고 Linux 디스크로 서버를 부팅하고 디렉토리를 rm -rf하려고 시도했지만 작동하지 않았습니다.

미스터리입니다.

편집 : 디렉토리를 제거하지 않고 디렉토리 이름을 바꿀 수 있다고 덧붙일 수도 있습니다.


1
서버 결함 에서도 비슷한 문제가 해결되었습니다 .
Lilienthal

답변:


14

또한 Java IDE에 의해 생성 된 끝없는 재귀 폴더가 있었고 Windows 탐색기 또는 cmd 프롬프트에서 삭제할 수 없었습니다.

그러나 git을 설치할 때 git-bash도 설치했습니다. git-bash에서 다음 명령을 실행할 수 있습니다.

rm -rfd recursive_folder_name

그것을 처리 할 것입니다.


중요 사항 : 시간이 많이 걸릴 수 있습니다 ... 휴식을 취하고, 무언가를 먹고, 커피를 마시고, 유닉스 도구를 사용하게하십시오;) 놀랍게도 작동합니다
Antwane

vmware 기반 Linux를 사용하고 드라이브를 마운트하는 경우에도 작동합니다 (
외부인

4

어딘가에 폴더에 대한 심볼릭 링크가있을 student수 있습니다.

다음 명령을 실행하십시오 :

dir D:\Student\2012\user.name\servername

studentDIR 또는 SYMLINK / JUNCTION으로 표시되어 있는지 확인하십시오 .

예를 들어, 다음은 일반적인 dir명령 출력입니다 .

04/24/2012  10:58 PM    <DIR>          .
04/24/2012  10:58 PM    <DIR>          ..
04/24/2012  10:58 PM    <SYMLINKD>     a [h:\a]

처음 두 항목은로 표시되고 DIR세 번째 항목 (다른 폴더에 대한 심볼릭 링크)은로 표시됩니다 SYMLINKD. 귀하의 경우 (Windows 2003) JUNCTIONs 대신 SYMLINKs 가 있다고 생각 합니다.

경우 student폴더에 심볼 링크 또는 접합은, 명령을 실행 :

cd /d D:\Student\2012\user.name\servername
rmdir student

따라서 재귀를 제거하십시오.


어떤 디렉토리도 심볼릭 링크가 아니며 첫 번째 커플과 "끝"에 붙어있는 것을 확인했습니다.
EnglishInfix

2

해당 폴더에서 작업하는 사람이에서 user.name로 루프백하는 연결 지점을 servername만들어서 '무한 루프'디렉토리 트리를 만들 수 있습니다.

정션은 NTFS 파일 시스템의 기능으로 디렉토리의 별명으로 작동하는 디렉토리에 대한 기호 링크를 작성할 수 있습니다. http://en.wikipedia.org/wiki/NTFS_junction_point

위키 페이지의 "관측 효과"섹션에서 설명하는 문제를 볼 수 있습니다.

해당 서버의 정션을 나열하려면이 유틸리티를 실행하십시오.

http://technet.microsoft.com/en-us/sysinternals/bb896768

또한 접합점을 삭제할 수있는 기능을 제공해야합니다.


2

이클립스가 삭제할 수없는 거대한 폴더 트리를 만들 때 비슷한 문제가 발생했습니다. 그러나 폴더를 이동하고 이름을 바꿀 수 있었기 때문에 배치 파일을 작성하여 한 번에 하나씩 폴더를 삭제하면 트리가 다운되었습니다. C 디렉토리에있는 FOLDERNAME 의 명백히 깊은 폴더 트리의 경우

C:/*FOLDERNAME*/*FOLDERNAME*/*FOLDERNAME*/*FOLDERNAME*/*FOLDERNAME*/*FOLDERNAME*/...

배치 파일 :

:LoopStart
REN "C:/*FOLDERNAME*" "*TEMPFOLDERNAME*"
MOVE "C:/*TEMPFOLDERNAME*/*FOLDERNAME*" "C:/"
RMDIR /S /Q "C:/*TEMPFOLDERNAME*"
GOTO LoopStart
:LoopEnd

TEMPFOLDERNAME은 이제 유한 길이의 트리 (아무것도 포함하지 않은 단일 폴더)이고 거대한 FOLDERNAME 트리에는 루프가 실행될 때마다 하나의 폴더가 없어서 맨 위에있는 폴더를 제거하여 맨 아래에 도달하기 때문에 작동합니다.



1

이 스크립트를 사용하여 끝없는 반복 디렉토리를 해결했습니다.

:LoopStart
takeown /F "c:\temp\Application Data"
Attrib -S -H "c:\temp\Application Data"
REN "C:\temp\Application Data" "5"
takeown /F "c:\temp\5\Application Data"
Attrib -S -H "c:\temp\5\Application Data"
MOVE "c:\temp\5\Application Data" "C:\temp"
Del /F /S /Q c:\temp\5\*.*
RMDIR /S /Q "C:\temp\5"
GOTO LoopStart
:LoopEnd

0

나는 같은 문제가 있었다. 삭제하려는 폴더에 같은 이름의 링크 트리가 끝없이 포함되어 있으며 삭제하려고 할 때마다 "파일이 너무 깁니다 ..."오류가 발생했습니다. 위의 모든 방법을 포함하여 시도한 명령에 상관없이 해당 폴더 바로 위의 cmd 창에서 Cygwin의 "rm"명령을 시도했습니다. "rm -r -f [folder]"를 입력했는데 불만없이 폴더가 삭제되었습니다.

Cygwin은 https://cygwin.com/install.html 에서 무료로 다운로드 할 수 있습니다 . 기본적으로 모든 일반적인 명령 (예 : ls, rm, du 및 cat)이 포함 된 Windows 용 UNIX 쉘이지만, 모두 다운로드 한 경우 약 1GB의 공간을 차지하는 수많은 패키지가 있습니다. 기본 다운로드 패키지에는 UNIX 명령이 포함되어 있다고 생각합니다. 그렇지 않은 경우 메모리가 제공되는 경우 "utils"번들에 있습니다.

참고 : Cygwin 명령은 기본 bash 쉘 창에서 실행할 필요가 없습니다. cygwin의 "bin"디렉토리에 대한 경로를 시스템 PATH 환경 변수에 추가하여 cmd 창에서 실행할 수 있습니다. 제 경우에는 "C : \ cygwin64 \ bin"을 추가했습니다.

이게 도움이 되길 바란다.


0

나는 여기에 같은 문제가 있습니다.

다른 게시물에서는 MS RoboCopy와의 네트워크 공유를 통해 빈 폴더를 미러링하는 것이 좋습니다.

이 순간에 나는 이것을 "> nul"로 속도를 높이기 위해 이것을 실행하고 있습니다 (실제로) :

"C : \ TEMP"는 빈 폴더이고 "W : \ TMP"는 영향을받는 폴더입니다.

robocopy / mir c : \ temp \ 127.0.0.1 \ w $ \ tmp> 널


1
슈퍼 유저에 오신 것을 환영합니다. 다른 곳에서 솔루션을 인용하는 경우 속성 및 추가 정보를위한 링크를 포함하십시오. 정답은 확실한 솔루션입니다. 그래도 시도하는 중이라면 게시하기가 아직 이르지 않은 것입니다.
fixer1234

0

나도 이것을 독립형 Windows 10 시스템에서 가지고 있었다. C : \ User \ Name \ Repeat \ Repeat \ Repeat \ Repeat \ Repeat \ Repeat \ Repeat가 무한대로 보입니다.

OP에 따라 Windows 또는 명령 프롬프트를 사용하여 약 50 번째로 탐색 할 수 있습니다. 설명대로 정확하게 삭제하거나 클릭 할 수 없습니다.

C는 내 언어이므로 결국 시스템 호출 루프가있는 프로그램을 작성하여 실패 할 때까지 반복합니다. JohnO의 DOS 코드에 따라 tmp라는 디렉토리를 만들고 Repeat \ Repeat를 그 폴더로 옮기고 지금 비어있는 Repeat 폴더를 삭제 한 다음 tmp \ Repeat를 현재 폴더로 다시 옮겼습니다. 다시 반복하여!

 while (times<2000)
 {
  ChkSystem("move Repeat\\Repeat tmp");
  ChkSystem("rd Repeat");
  ChkSystem("move tmp\\Repeat Repeat");
  ++times;
  printf("Removed %d nested so far.\n", times);
 }

ChkSystem은 단지 system () 호출을 실행하고 반환 값을 확인하여 실패하면 중지합니다.

중요한 것은 여러 번 실패했습니다. 내 프로그램이 작동하지 않거나 결국 너무 길다고 생각했습니다. 그러나 이전에는 시스템 호출을 사용하여 동기화하지 않은 상태 로이 작업을 수행 했으므로 프로그램을 다시 실행하고 중단 된 부분부터 계속 진행했기 때문에 프로그램이 작동하지 않는다고 생각하지 마십시오. 전체적으로 약 20 회 실행 한 후 모두 해제했습니다. 전체적으로 원래 폴더 깊이는 약 1280 개였습니다. 그 원인을 알 수 없습니다. 미친.


0

3 단계 루핑 디렉토리 사용 :

:LoopStart
takeown /F "D:\temp\MyApp"
Attrib -S -H "D:\temp\MyApp"
REN "D:\temp\MyApp" "5"
takeown /F "D:\temp\5\MqttObserver"
Attrib -S -H "D:\temp\5\MqttObserver"
REN "D:\temp\5\MqttObserver" "6"
takeown /F "D:\temp\5\6\PackageFiles"
Attrib -S -H "D:\temp\5\6\PackageFiles"
REN "D:\temp\5\6\PackageFiles" "7"
MOVE "c:\temp\5" "C:\temp"
Del /F /S /Q c:\temp\5\*.*
RMDIR /S /Q "C:\temp\5"
MOVE "c:\temp\6" "C:\temp"
Del /F /S /Q c:\temp\6\*.*
RMDIR /S /Q "C:\temp\6"
MOVE "c:\temp\7" "C:\temp"
Del /F /S /Q c:\temp\7\*.*
RMDIR /S /Q "C:\temp\7"
GOTO LoopStart
:LoopEnd

코드와 함께 설명? <:: ;; :: ;; :: ;; :: ;; : :( | XXXX |) o ~
Pimp Juice IT

0

관리 콘솔을 통해 chkdsk / f를 실행하여 재부팅하고 재부팅 한 다음 파일 탐색기 삭제를 사용했습니다. Windows가 긴 파일 / 폴더에 대해 불평했지만 삭제를 확인하면 문제가있는 재귀 폴더를 제거했습니다.

Windows 7 Pro 파일 시스템에서 이전 chkdsk 옵션을 사용하여 생성 한 다른 문제가 있는지 확실하지 않습니다.


0

나에게 Windows RoboCopy 방법의 변형이 효과가있었습니다.

mkdir c:\empty
robocopy c:\empty toolongdir /purge
rmdir c:\empty
rmdir toolongdir

예, 시간이 걸리지 만 일을했습니다.


-1

다음과 같이 MS ROBOCOPY를 실행하십시오.

  1. "무한하게 반복되는 디렉토리 트리"를 포함하는 폴더와 동일한 이름으로 "빈 폴더"를 작성하십시오.
  2. / MIR 옵션을 사용하여 명령 행에서 ROBOCOPY를 실행하십시오.
  3. ROBOCOPY가 종료 된 후 (몇 초 정도 걸릴 수 있음)
  4. "무제한 반복 디렉토리 트리"(현재 "빈 폴더")가있는 폴더를 삭제하십시오.
  5. 또한 1 단계에서 만든 "빈 폴더"를 삭제하십시오.

. . . . . . . . . . . . . . .

ROBOCOPY "C : \ anyplace \ BADFOLDER" "C : \ wherever \ BADFOLDER"/ MIR

어디:

C : \ anyplace \ BADFOLDER ..는 사용자가 만든 "빈 폴더"이며

C : \ wherever \ BADFOLDER ..는 "무한하게 반복되는 디렉토리 트리"가있는 폴더입니다.

. . . . . . . . . . . . . . .

ROBOCOPY가 실행 된 후 .. 이제 두 개의 "빈"BADFOLDERS가 있습니다.

정리하려면 둘 다 삭제하십시오.

C : \ anyplace \ BADFOLDER 및 C : \ wherever \ BADFOLDER

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.