Programing

Windows에서 긴 경로를 삭제하는 방법.

lottogame 2020. 11. 29. 09:29
반응형

Windows에서 긴 경로를 삭제하는 방법.


프로젝트를 eclipse로 가져올 때 어떻게 든 재귀 버전의 디렉토리를 만들기 시작했습니다.

이제 아무것도 삭제하려고하면 "지정한 파일 이름이 너무 깁니다."라는 메시지가 표시됩니다.

명령 셸에서 삭제할 수 없습니다. 탐색기에서 삭제할 수 없습니다. 나는 그것으로 아무것도 할 수 없습니다. Eclipse가 얼마나 많은 사본을 만들 었는지 모르겠습니다. Eclipse가 1 분 정도 실행 중이 었는데 뭔가 잘못되었다는 것을 깨닫고 작업을 취소했습니다.

최상위 폴더의 속성을 가져올 수 있으며 497 개의 폴더가 포함되어 있습니다.

질문 1 : Windows에서이 모든 항목을 어떻게 삭제할 수 있습니까?

질문 2 : 이클립스가 무슨 생각을하고 있었습니까?


Eclipse에서 이와 비슷한 문제가 발생했습니다. Subclipse를 사용하여 프로젝트를 가져 오려고하면 삭제할 수없는 깊이 중첩 된 디렉토리 세트가 생성되었습니다.

저는 몇 가지 작업을 수행했습니다. 먼저 디렉토리 이름을 가능한 가장 짧은 길이로 편집했습니다 (실제로는 이것이 무의미하다고 생각합니다). 둘째, 디렉터리 트리를 최대한 깊게 탐색 한 다음 분기를 잘라내어 붙여 넣은 다음 (원래 분기를 삭제할 수 있음) 프로세스를 반복했습니다.

@Charlie 및 @Tomalek의 솔루션은 더 우아 할 수 있습니다. 그래도 알아 내기 위해 경험을 반복 할 계획은 없습니다.


robocopy empty_dir base_nested_dir /purge

예 : 다음과 같이 너무 긴 폴더 경로가있는 경우 :

D:\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles\BackupFolder\Copy\MyFiles

삭제하려면 다음 지침을 따르십시오.

  1. 와 같은 빈 폴더를 만듭니다 C:\Users\Name\Desktop\temp.
  2. 명령 프롬프트 창을 엽니 다.
  3. 유형 robocopy C:\Users\Name\Desktop\temp D:\BackupFolder /purge

참고 : 3 단계에서 경로 중 하나에 공백이 있으면 경로를 따옴표로 묶어야합니다.


7Zip은 명령 줄에 익숙하지 않은 경우 최고의 솔루션입니다.

  1. 7Zip 파일 관리자 열기
  2. 파일로 이동
  3. Shift- 파일 삭제

건배!


Q1에 관해서)

subst를 사용하여 경로를 단축하십시오.

subst Q: C:\very\long\path\created\by\eclipse
Q:
del *.*

Q2에 관해서)

긴 경로는 다른 OS에서는 문제가 적고 255 자보다 긴 경로를 처리 할 수 있는 Windows API 함수가 있으므로 방금 수행 한 것 같습니다.


보다 긴 경로를 처리해야하는 경우 MAX_PATHWindows 파일 API의 유니 코드 버전 (예 DeleteFileW:)을 사용하고 \\? \ 접두사를 사용해야합니다. 이러한 API를 사용하여 짧은 프로그램을 작성하여 이러한 디렉토리를 열거하고 삭제할 수 있습니다.


수정은 간단하고 무료입니다! 폴더의 이름을 전혀 바꿀 필요가 없습니다.

  1. 다운로드 Cygwin에서 무료로.

  2. 명령을 사용하고 rm -f -r <folder-name>잠시 기다리십시오.

많은 내부 폴더가있는 1.5GB 크기의 폴더가 있었고 작동했습니다!


나는 이클립스를 사용하여 같은 문제에 직면했다 ..! 무수히 많은 중첩 폴더가 생성되었고 500MB 이상의 공간을 차지했습니다 !!!!

나는 창문에서 많은 것을 시도했지만 아무것도 작동하지 않았습니다 ..

마지막으로 우분투를 사용하여 재부팅하고 그 끔찍한 폴더를 삭제했습니다. 그렇게 .. 우분투는 Windows처럼 파일 경로 길이를 기반으로 한 액세스 제한이없는 것 같습니다 .. 삶을 훨씬 쉽게 만듭니다 .. :)


이전 세 가지 응답은 분명히 스팸입니다 (페이웨어 데모의 경우). 무료 원 클릭 솔루션을 원하는 경우 여기를 참조하십시오.

http://www.osmstudios.com/Display.asp?Page=pathtoolong

아마도이 스레드에서 3 줄 Java를 사용합니다.

-fm


maxaha1의 Windows Sysinternals 포럼 게시물에 언급 된 방법 작동했습니다.

나는 당신이 위에서 아래로 일하는 것이 좋습니다. 동일한 볼륨 (공유) 내에있는 한 일반적으로 드래그되는 디렉토리의 내용 (즉, 길이 / 재귀 문제)에 관계없이 상위 디렉토리를 새 상위 디렉토리로 드래그 할 수 있습니다. 따라서 디렉토리를 문제 경로 아래로 4 ~ 5 단계 끌어내어 루트로 드래그합니다. 그런 다음 이제 몇 수준 만 포함 된 원래 경로를 삭제합니다. 이상적으로는 가장 긴 경로를 250 자 (파일 이름 포함) 미만으로 유지하는 것이 좋습니다. 현재 시스템 마이그레이션을 수행하고 있으며이 방법 없이는 복사하지 않는 340 개 이상의 문자 경로를 가진 일부 사용자가 있습니다. 나는 subst, recursive net use, recursive scripts 등을 시도했습니다. 불행히도 사용자는 최고의 코더, 관리자 등을 혼란스럽게 만드는 것들을 만들 수있는 것 같습니다.

Create new folders and just drag-and-drop, several folders down from the top each time (and delete them) until you get it all cleaned up.


Programmatically you can delete using DeleteFileW and RemoveDirectoryW, and prepending L"\\?\" to the file names. Note that you have to use the W version not the A version of the APIs.


위의 누군가가 이미 "rimraf"에 대한 참조를 게시했지만 자세한 내용을 추가하겠습니다. 시스템에 Node가 설치되어 있으면 rimraf 모듈을 사용 하십시오 (Path에 설치할 수 있음). 이것은 가장 사소하지 않은 경우 Windows 시스템에서 항목을 삭제하는 가장 쉬운 방법입니다. rimraf가 굉장한 것은 아닙니다. 실제로 Node.js가 장치 커널 수준에서 파일 시스템을 처리하기 때문입니다. 당신이 노드에 대한 'FS'모듈 소스 코드를 보면, 같은 코드를 볼 수 있습니다 . 본질적으로 Node.js는 Windows 용 Git보다 파일 시스템을 훨씬 더 잘 처리합니다. 즉, 긴 경로 이름을 가진 폴더를 삭제하지 않는 Windows에서 git clean -fdx를 사용하는 버그가 있습니다.


Lol 몇 년 전에 비슷한 문제가있었습니다. 버그로 인해 파일 이름이 너무 길어질 때까지 무기한 폴더 중첩을 만들었습니다.

IIRC, 폴더 구조를 통해 크롤링하여 프로그래밍 방식으로 삭제했습니다.


좋아, 나는 이것에 대한 해결책을 찾아 보았고 Windows 사용자에게 가장 쉬운 해결책 중 하나를 찾았습니다.

  1. Mobaxterm 설치
  2. mobaxterm을 엽니 다. 삭제하려는 디렉토리 (cd 사용)로 이동하여 다음 명령을 실행하십시오.

    rm -rf 디렉토리 이름

윈도우가 삭제를 요청했던 모든 폴더, 하위 폴더가 이제 삭제됩니다.


여기와 다른 곳에 게시 된 솔루션 (robocopy, 7zip, subst, shady spyware)에 만족하지 않았기 때문에 작은 명령 줄 도구를 사용했습니다.

파일 또는 전체 디렉토리를 재귀 적으로 삭제할 수 있습니다. 아마도 앞으로 더 많은 옵션을 추가 할 것입니다.

이 도구는 SuperDelete 라고 하며 릴리스 페이지 페이지 GitHub 에서 가져올 수 있습니다 .


MIR (전체 디렉토리 트리 미러링) 옵션은 Windows 및 Windows 네트워크 경로에서도 작동했습니다.

robocopy empty_dir <foldertobedeleted> /MIR

  • 빈 디렉터리를 생성하고 robocopy에게 빈 디렉터리에없는 대상 디렉터리의 모든 것을 제거하도록 지시하십시오.

출력은 다음과 같습니다 ..

여기에 이미지 설명 입력>


이것은 2016 년에도 리눅스가 몇 년 전 해결했을 때 여전히 Windows 사용자에게 문제를 안겨준다는 사실은 매우 성가신 일입니다. Java에서 쉽게 할 수있을 때 더욱 성가 시게됩니다.

We should use the Change.org to petition MS to include this ability. It can't be hard. If they are worried about backwards compatibility why not just have a Strict mode that admins can turn on or off. At least give us the warning but then allow us to delete it anyway. GRRRRR [/rant]

If you are running Java on your machine you might find this code helpful:

import java.io.File;

public class Delong {

    public static void main(String[] args) {
        File file = new File("F:\\YourDirectory\\YourFile");
        boolean result = deleteDirectory(file);

        if(result)
            System.out.println("Deleted");
        else
            System.out.println("Failed");
    }//end main

    /**
     * Force deletion of directory
     * @param path The path you want to delete
     * @return True if it worked;
     */
    static public boolean deleteDirectory(File path) {
        if (path.exists()) {
            File[] files = path.listFiles();
            for (int x = 0; x < files.length; x++) {
                if (files[x].isDirectory()) 
                    deleteDirectory(files[x]);
                 else 
                    files[x].delete();
            }//end for
        }///end if
        return (path.delete());
    }//endDeleteDirectory

}//end class

You can use "Cygwin" with the command "rm --force --recursive PATH" or short "rm -fr PATH".


If you already have git installed on your system, then a straightforward way of removing the folder with all its contents, is to open a gitbash window, and then run this command.

$ rm -rf DeleteFolderName


Try using Unlocker. It is used for killing processes holding locks on files, but I think it can force-delete f-ed up files, like you have.

참고 URL : https://stackoverflow.com/questions/551072/how-to-delete-a-long-path-in-windows

반응형