deltree에 무슨 일이 일어 났고 대체 무엇입니까?


81

MS-DOS의 이전 버전에서는 버전 7이라고 말하고 싶지만 틀릴 수 있습니다. deltree명령 이 있었는데 , 주어진 경로에서 모든 하위 디렉터리와 파일을 재귀 적으로 삭제했습니다.

deltree더 이상 존재 del하지 않지만 나무를 삭제할 수있는 능력을 상속하지 않는 것 같습니다. del /s파일을 삭제하지만 폴더는 삭제하지 않습니다.

배치 파일에서 트리를 쉽게 (즉, 하나의 명령으로) 삭제하는 방법은 무엇입니까?


2
deltree는 버전 5.0에서 소개되었습니다. (나는 그것을 사용할 수 있다는 기쁨을 아직도 기억합니다)-Man I feel old.
Mark D

답변:


90

다른 사람들이 언급했듯이 rd명령에는 /s하위 디렉터리를 재귀 적으로 제거 하는 스위치가 있습니다. /q스위치 와 결합하여 메시지를 표시하지 않고 하위 디렉토리 (및 그 내용)를 강제로 삭제할 수 있습니다.

rd /s /q c:\foobar

모두가 빠진 것은 인터넷 검색이 반환하는 모든 페이지가 ( 거의 ) 겉보기에 ( 거의 ) 모든 페이지에 대한 정확한 대체 rd아니라는 것입니다. 이 명령은 디렉토리 와 파일 모두에 대해 작동 하여 하나의 편리한 다목적 삭제 명령이되었습니다. 다음 두 가지가 모두 유효합니다.deltreewindows deltreedeltree

deltree /y c:\foobar
deltree /y c:\baz.txt

그러나 rd(당연히) 디렉토리에서만 작동합니다 . 따라서 다음 명령 중 첫 번째 명령 만 유효하고 두 번째 명령은 오류를주고 파일을 삭제되지 않은 상태로 둡니다.

rd /s /q c:\foobar
rd /s /q c:\baz.txt

또한 del명령은 디렉토리가 아닌 파일에 대해서만 작동하므로 두 번째 명령 만 유효하고 첫 번째 명령은 오류를 제공합니다.

del /f /q c:\foobar
del /f /q c:\baz.txt

에서 수행 할 수있는 파일 및 디렉토리를 삭제하는 기본 제공 방법은 없습니다 deltree. rdand del개별적으로 사용 하는 것은 파일 시스템 객체 (파일 / 폴더 이름)가 항상 가능하거나 실용적이지 않은 파일 또는 디렉토리인지 구별해야하기 때문에 기껏해야 불편합니다.

deltree이전 OS에서 명령을 복사 할 수 있지만 16 비트 DOS 명령 (Windows 9x에서도)이므로 32 비트 버전의 Windows에서만 작동합니다.

또 다른 옵션은 del및 모두를 호출하는 배치 파일을 만드는 것입니다 rd. 이 같은:

::deltree.bat

@echo off
rd  %* 2> nul
del %* 2> nul

다음과 같이 호출합니다.

deltree.bat /s /q /f c:\foobar
deltree.bat /s /q /f c:\baz.txt

이렇게하면 rd및 둘 다 호출 del하여 인수를 전달하고 출력을 nul로 리디렉션하여 둘 중 하나가 항상 발생하는 오류를 방지합니다.

매개 변수를 수용하거나 단순화하거나 오류 메시지를 허용하도록 동작을 사용자 정의하고 싶을 것입니다.하지만 그렇다고하더라도 deltree.

대안은 타사 도구를 얻는 것입니다.하지만 하나를 찾는 것은 검색 쿼리 작성의 실제 연습입니다.


2
@TobyAllen, "rm"? rd 를 의미 했습니까 ? 그렇다면 도움말 텍스트를 다시 읽어야합니다. 그것은 말한다 제거합니다 모든 디렉토리와 파일을 지정된 디렉토리에서 디렉토리 자체에 추가합니다. 디렉토리 트리를 제거하는 데 사용됩니다. 내가 말했듯이 파일을 삭제하지 않습니다. 그렇게 사용하는 경우 : rd /s foobar.txt, 확신하는 경우 메시지가 표시되고 예라고 말하면 (또는 /q스위치를 사용 ) 오류가 발생합니다The directory name is invalid.
Synetech

실제로를 사용하여 디렉터리 (하위 디렉터리 포함) 아래의 모든 것을 제거 할 수 RMDIR /S있으므로 한 번에 파일과 폴더를 모두 삭제할 수있는 방법이 없다고 말하는 것은 실제로 잘못된 것입니다.
vapcguy

@vapcguy rd /s디렉토리 에만 적용되며 그 안의 파일 에는 적용 되지 않습니다 . 그 안에있는 파일을 삭제하려면 rd디렉토리 자체에서을 사용해야 합니다. 예를 들어, rd c:\target\foobar.txt를 사용해야 한다고 말할 rd /s c:\target수 없지만 디렉토리 자체는 삭제하지 않고 내용 만 삭제할 수 있습니다. deltree그렇게 할 수는 있지만 rd /s할 수는 없지만 rd /s디렉토리 자체도 삭제합니다.
Synetech

공지 사항 나는 말했다 RMDIR /S- 없습니다 rd /s. 그러나을 사용하더라도 rd디렉토리가 없어지면 파일이 어떻게 제거되지 않습니까? 그렇지 않은 경우에도 파일은 사실상 분리되어 시스템에 의해 가비지 수집되어야합니다. 그리고 그것이 일어나지 않더라도, 디렉토리를 다시 생성하면 확실히 그렇습니다. 마술처럼 파일 목록을 다시 얻지는 못합니다. 포인터는 본질적으로 제거됩니다. 그래서 당신은 다시 그 파일을 삭제할 수 없기 때문에 그 공간을 다시 얻지 못한다고 말하는 것 rd /s입니까? 그게 끔찍한 버그가 될 거라고 확신하지 못합니다. 요점은 파일 및 디렉토리를 삭제하는 것입니다.
vapcguy

당신이 "테스트"라는 "문서"폴더에 디렉토리를 작성하는 경우, Windows에서 다음 가까운 탐색기 창, 명령 줄로 이동이 테스트 텍스트 문서를 작성, cd Documents, rd /s test, 디렉토리 및 텍스트 파일이 제거됩니다. rmdir /s test작동합니다. 당신은 절대로 사용하려고 rd /s C:\Users\me\Documents\test\test.txt하지 않습니다. 그것은 절대적으로 어리석은 일입니다. 그러나 파일 이름이 아닌 디렉토리에서 명령을 사용할 수 있고 사용해야합니다. 그러나 디렉토리를 제거하면 파일을 제거 할 수 있습니다.
vapcguy

43

RMDIR 또는 RD 명령으로 대체되었습니다.

/ S를 사용하여 모든 하위 디렉터리 삭제

/ Q와 함께 조용히 사용

예:

RMDIR /S /Q Folder2Delete
RD /S /Q Folder2Delete

선적 서류 비치:


3
"RMDIR / S / Q. \"는 현재 디렉토리와 그 아래의 모든 것을 효과적으로 삭제합니다. 예, 현재 디렉토리를 삭제할 수 없다는 불만이 제기되어 유용 할 수 있습니다. 실행할 때 올바른 디렉토리에 있는지 확인하십시오! :)
Mmm

9

향수를 불러 일으키며 내 자신의 deltree.exe를 작성했습니다. 디렉터리와 파일 모두에서 작동하며 속도를 위해 SHFileOperation ()을 사용합니다.

https://github.com/ai7/toolbox/tree/master/deltree

deltree v1.01 [Mar 27 2015, 16:31:02] (gcc 4.9.1)

Usage: deltree [options] <path> ...

Options:
  -y    yes, suppresses prompting for confirmation
  -s    silent, do not display any progress dialog
  -n    do nothing, simulate the operation
  -f    force, no prompting/silent (for rm compatibility)
  -r    ignored (for rm compatibility)

Delete directories and all the subdirectories and files in it.

와일드 카드가 필요하며 unix rm처럼 사용할 수 있습니다.

deltree -rf *


5

요즘에는 Powershell을 사용하여 동일한 작업을 수행 할 수 있습니다.

powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"

불행히도 PowerShell은 부풀고 느립니다. :-\ 회사가 사용자에게 최신 정크로 "업그레이드"하도록 강요하는 것이 싫습니다. 😒
Synetech

4
$ help rd
디렉토리를 제거 (삭제)합니다.

RMDIR [/ S] [/ Q] [드라이브 :] 경로
RD [/ S] [/ Q] [드라이브 :] 경로

    / S 지정된 디렉터리에있는 모든 디렉터리와 파일을 제거합니다.
            디렉토리 자체에 추가됩니다. 디렉토리를 제거하는 데 사용
            나무.

    / Q 자동 모드, / S를 사용하여 디렉토리 트리를 제거해도되는지 묻지 않음

2

실제로 최신 Windows 운영 체제의 RMDIR 및 RD 명령은 단일 명령에서 Win 98의 명령 RD 및 Deltree를 모두 병합합니다. RD.exe 및 RMDIR.exe를 찾을 수없는 이유는 내부 명령입니다.

이 "RD /?"를 입력하여 더블 qout이없는 cmd에서는 원하는 것을 정확하게 얻을 수 있습니다.


0

디렉토리와 모든 내용을 재귀 적으로 삭제하려면

rd /s MY_DOOMED_DIR


0

모든 파일 및 하위 디렉터리 삭제

cd /d Directory && rd /s /q .\

귀하의 답변은 다른 답변과 중복 된 것 같습니다 (일부는 10 년 전). 더 이상 또는 더 나은 설명이나 다른 이점을 볼 수 없습니다
jeb

1
@jeb, 실제로 그렇지 않습니다. 그것은 약간 다르고 그 약간의 차이가 중요하고 그것을 더 우수하게 만듭니다. 👍😉
Synetech
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.