파일 이름이 너무 긴 Windows에서 파일을 삭제하는 방법은 무엇입니까? [복제]


202

제 아내는 여러 가지 파일과 폴더를 가지고 있는데, 그 결과 파일 이름이 정상적인 방법이나 명령 줄을 통해 삭제할 수 없게 만들었습니다 (삭제할 수 없음). 폴더 구조의 깊이로 인해 파일 이름이 너무 길다고 생각합니다. 누구든지 이와 같은 파일을 정리하는 데 유용한 유틸리티를 알고 있습니까?


이 파일들은 어떻게 만들어 졌습니까?
Nick

이 주제에 대해 무지하게되어 유감이지만 Windows가이 파일을 처리해서는 안됩니까? Eddins가 게시 한 내용은 Windows에서 자동으로 수행하지 않아야합니까 (탐색기에서도)?
Stefanos Kalantzis

2
@ Mokubai- 이 질문이 오래 되었으므로 중복 질문은 이 질문 과 중복 됩니다.
AStopher

1
@ cybermonkey : 그리고 더 나은 답변이 있습니다.
Ellesedil

더 많은 독자들을 위해, 7zip Method with CTRL+DELETE 가 가장 쉬운 방법이라고 생각합니다.
Christian Gollhardt

답변:


426

디렉토리를 완전히 삭제하고 긴 경로를 포함하고 싶을 때 robocopy매우 잘 작동합니다.

mkdir empty_dir
robocopy empty_dir the_dir_to_delete /mir
rmdir empty_dir
rmdir the_dir_to_delete

이것은 robocopy가 내부적 으로 파일 경로 \\?\접두어 와 함께 유니 코드 인식 버전의 Win32 함수를 사용 하기 때문에 작동 합니다 . 이러한 함수는 259 대신 2¹⁶-1 (32,767) 자로 제한됩니다.

모든 파일을 제거하려면이 프로세스를 두 번 이상 수행해야 할 수도 있습니다.


1
파일 시스템에 짧은 이름 (8.3)이 저장되지 않은 경우에 효율적입니다.
Antoine RODRIGUEZ 10

1
이것은 삭제를 거부 한 완고한 Windows 스토어 캐시 파일 과 잘 작동했습니다 . 감사!
Samir

1
나는이 작업을위한 ROBOCOPY 라인 / 제거를 추가했다,하지만 그 이후 트릭했다
actionshrimp

3
Robocopy는이 혼란에 빠지게했지만 Robocopy를 사용하여 나를 꺼내는 일은 결코 없었습니다. 좋은 답변입니다! 감사!
Jay Michaud

2
@SarahofGaia, 내 나쁜, 그것은 실제로 2¹⁶-1입니다
Benoit

91

명령 프롬프트에서 :

dir /X

파일 / 폴더가 짧은 이름 형식으로 나열됩니다. 그런 다음 작성된 짧은 이름을 사용하여 파일을 삭제하십시오.

del LONGF~1.txt

1
나는 그 것을 좋아한다. 그것은 약간의 측면 적 사고이다.
Col

이 경우에는 작동하지 않을 수 있지만 마지막에는 유효하지 않은 문자가있는 폴더를 삭제하여 정상적인 방법으로는 삭제할 수 없도록 여러 번 사용했습니다.
Will Eddins

1
이것은 현재 디렉토리에있는 파일 및 폴더에 대한 작동하지만, 어떻게 든 자신을 발견하기 위해 관리하는 경우 내부에 그 경로가 너무 긴 폴더, 그것은 도움이되지 않습니다. 예를 들어, 나는 너무 긴 경로에 콘솔 현재 오전 수 없습니다 심지어 dircd ...
밥슨

1
@Bobson 대신 dir사용할 수없는 경우 pushd. 그것은 나를 위해 일했다.
BadHorsie

4
이것은 Windows 10에서 작동하지 않습니다. 표시된 파일 이름은 긴 것입니다
Loenix

53

Progressivley는 진행중인 각 상위 폴더의 이름을 "1"로 바꾸고 삭제하려고 시도했습니다. 매번 경로를 효과적으로 단축하고 있으며 전체 디렉토리 구조를 삭제할 수있을 때까지 4 ~ 5 개 이상의 디렉토리로 작업 할 필요가 없습니다 (원하는 것일 수도 아닐 수도 있음). 마지막 하위 폴더 에서도이 작업을 수행하고 위아래로 작업 할 수 있습니다.


7
이것이 나를 위해 일한 유일한 것입니다. 여기와 다른 포럼에서 주어진 다른 모든 트릭은 작동하지 않았습니다.
Andrew Arnott

이상하게도 효과가 있었던 유일한 제안이었습니다.
Nestor Ledon

이것은 나를 위해 일한 지름길이었습니다 mv * 1 && cd 1. 디렉토리에 여러 파일이있을 때 작동하지 않았지만 그 시점에서 rm -rf *일반적으로 트릭을 수행했습니다.
Alexander Varwijk

1
Windows 10에서이 작업을 수행 할 수 없습니다 ... 이름 바꾸기에서 "filename to long"오류가 발생합니다
Dawesi

3
이로 인해 문제가 해결되었을뿐만 아니라 처음에 문제를 어떻게 해결했는지 설명합니다. 한도에 가까운 경로가 있어야합니다. 그런 다음 하위 폴더의 파일을 한도 위로 푸시 한 상위 폴더의 이름을 바꿨습니다 ( "백업 2016 년 11 월 백업"과 같은 이름으로 추가). 다른 방법으로도 발생할 수 있음을 알고 있지만 원인과 해결책을 알고 있으면 좋을 것입니다. 이것이 사람들에게 일반적인 방법이라고 생각합니다.
eselk

13

명령 프롬프트 ( cmd.exe)를 포함한 일부 프로그램에서는 다음 과 \\.\같이 전체 경로를 접두어로 붙여 파일 길이 제한을 극복 할 수 있습니다 .

\\. \ C : \ some directory \ other directory \ 긴 이름의 파일

3
Windows 10에서 작동하지 않음
Dawesi

덕분에, cmd를 Win7에이 가진 매력을 일rm -rf \\directoryname
필립 Pryde을

13

무언가를 이동, 복사 또는 삭제하기 위해 "전체 경로 및 파일 이름"길이 제한을 극복하는 데 사용한 트릭은 폴더를 가리키는 매핑 된 드라이브 문자를 사용하여 절반 이상 (또는 그 이상으로) '분할' 하는 것입니다. 길을 내려 .

따라서 c : \ some \ long \ path ... \ and \ foo \ bar \ folders \ oldfiles \ myoldfile.txt가 있습니다.

그런 다음 임의의 드라이브 문자를 경로의 어딘가에 맵핑하여 경로의 첫 번째 청크가 몇 자로 만 길어 지도록하십시오. 전제 조건-폴더가 공유 폴더에 있어야합니다 (이 폴더는 서버에 있거나 이미 필요한 경우), 폴더가 아닌 경우 경로의 어딘가에 폴더를 선택하십시오 공유하십시오. 환경 및 편집증 수준에 따라 NTFS 권한이 합리적으로 제한되는 한 모든 사람이 공유에 대한 액세스를 수정할 수 있습니다. 원하는 경우 자신의 계정에만 수정 권한을 허용하십시오.

이제 공유 폴더 또는 그 안의 폴더로 이동하여 공유하거나 다음과 같이 명령 줄을 사용하십시오. "foo"폴더를 "fooshare"로 공유한다고 가정하면 할 수 있습니다

net use x: \\mycomputername\fooshare\bar\folders /persistent:no

X : 드라이브는 이제 해당 공유 내의 "폴더"폴더를 직접 가리 키므로 "x : \ oldfiles \ myoldfile.txt"는 매우 짧습니다.

"/ persistent : no"는 다음에 다시 부팅해도 살아남지 않고 나중에 혼동하지 않음을 의미합니다. 완료되면 폴더를 공유 해제하는 것을 잊지 마십시오.

당신이 바로 매핑 할 수있는 공유 폴더 안에 이미있는 경우에는, 반드시 파일이 들어있는 폴더를 공유 할 필요가 없습니다, 기억 공유하고 대상 폴더에 중첩 된 폴더 에 가까운 파일과 그 잘 작동합니다.

사용자가 폴더 구조에서 드라이브를 매우 깊게 매핑 했으므로 거기에서 255자를 사용할 수 있었지만 총 파일 경로 길이를 초과한다는 것을 알았을 때 두 서버간에 대규모 로보 코프를 수행하는이 기술을 사용해야했습니다. 로컬 드라이브 루트에서 액세스 할 때


4
subst x: C:\Some\first\part\of\the\long\pathsubst x: /d
mihi

1
시도는 좋지만 10의 k 폴더가 중첩되어 있으면 불가능합니다.
Julian Knight

subst트릭은 한 파일 이름이 아니므로 잘 작동하는 것 같다 그래서 심지어 드라이브의 루트에 이상 260 자 갈 만들기 위해 한.
Stephen Chung

또한 폴더를 명시 적으로 공유 할 필요는 없으며 net use기본 관리자 공유를 사용할 수 있습니다.net use x: \\localhost\c$\bar\folders /persistent:no
kapex

9

내가 찾은 가장 간단한 방법은 우분투 라이브 CD로 부팅하는 것입니다.

또는 경로의 절반 아래에 공유 폴더를 만든 다음 네트워크 드라이브를 해당 폴더에 매핑하고 매핑 된 폴더에서 삭제를 수행 할 수 있습니다 (같은 컴퓨터에서도).


17
Ubuntu Live CD가 Windows 문제 해결에 얼마나 자주 도움이되는지 재미 있어요 ^^
Ivo Flipse

1
나 자신, dodgy 네트워크는 라이브 CD를 시도, 파일 시스템 문제는 라이브 CD를 시도, 손상된 파티션 테이블 등을 발견했습니다. :-)
Col

이것은 나를 위해 일한 유일한 솔루션입니다. 사랑 해요, 리눅스! <3
David Frye

1
Windows에서 bash 실행 Linux가 필요하지 않습니다. ;-) 또한 Windows 10을 실행하는 경우 "Linux 용 Windows 하위 시스템"을 설치하면 기본적으로 Windows는 우분투 API 후크를 사용하여 작업을 완료합니다. "apt, ssh, rsync, find, grep, awk, sed, Ubuntu 아카이브에서 sort, xargs, md5sum, gpg, curl, wget, apache, mysql, python, perl, ruby, php, gcc, tar, vim, emacs, diff, patch 및 수만 개의 바이너리 패키지 중 대부분! "이것은 Windows에서 실행되는 매우 완전한 Linux 개발 환경입니다. zdnet.com/article/ubuntu-and-bash-arrive-on-windows-10
Dawesi

Cygwin에서 윈도우에서 리눅스 명령을 실행하기위한 또 다른 대안이다
atom88

5

잘라 내기 / 붙여 넣기 디렉토리의 이름을 바꾸고 삭제하십시오. 여기서 작동합니다.

또는 문제를 겪고 싶지 않다면 명령 프롬프트에서.


이것은 매력처럼 작동합니다. 거기에 파고 (나를 위해, 그것은 매우 중첩 된 node_modules폴더 였습니다 ) 데스크탑으로 드래그하여 삭제하십시오. 한 번에 몇 개의 폴더를 올리면서 헹구고 반복하십시오. 정말 독한 문제입니다.
nickb

7
긴 파일 이름으로 인해 붙여 넣기 작업이 실패했습니다-잘라낸 위치는 중요하지 않습니다.
UpTheCreek

1

아마도 가장 좋은 방법은 아니며 다른 사람들이 생각해내는 것에 관심이 있습니다.

나는 이것을 한 번 가지고 있었고 운없이 몇 가지를 시도했습니다. 좋은 도구를 찾지 않고 Windows 디스크를 다시 시작하고 복구 콘솔로 이동하여 그곳에서 삭제했습니다. 처음으로 정말 잘했습니다!

또한 Google에서 귀하를 대신하여 이것을 발견했습니다 -DelinvFile은 좋아 보이지만 보증 할 수는 없습니다.

편집-경고, 방금 위의 평가판 만 보았습니다-처음 생각했던 것만 큼 좋지 않을 수도 있습니다!


무료 rimraf는 다른 모든 아이디어가 실패했을 때 잘 작동했습니다.
Julian Knight
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.