MS-DOS의 이전 버전에서는 버전 7이라고 말하고 싶지만 틀릴 수 있습니다. deltree
명령 이 있었는데 , 주어진 경로에서 모든 하위 디렉터리와 파일을 재귀 적으로 삭제했습니다.
deltree
더 이상 존재 del
하지 않지만 나무를 삭제할 수있는 능력을 상속하지 않는 것 같습니다. del /s
파일을 삭제하지만 폴더는 삭제하지 않습니다.
배치 파일에서 트리를 쉽게 (즉, 하나의 명령으로) 삭제하는 방법은 무엇입니까?
MS-DOS의 이전 버전에서는 버전 7이라고 말하고 싶지만 틀릴 수 있습니다. deltree
명령 이 있었는데 , 주어진 경로에서 모든 하위 디렉터리와 파일을 재귀 적으로 삭제했습니다.
deltree
더 이상 존재 del
하지 않지만 나무를 삭제할 수있는 능력을 상속하지 않는 것 같습니다. del /s
파일을 삭제하지만 폴더는 삭제하지 않습니다.
배치 파일에서 트리를 쉽게 (즉, 하나의 명령으로) 삭제하는 방법은 무엇입니까?
답변:
다른 사람들이 언급했듯이 rd
명령에는 /s
하위 디렉터리를 재귀 적으로 제거 하는 스위치가 있습니다. /q
스위치 와 결합하여 메시지를 표시하지 않고 하위 디렉토리 (및 그 내용)를 강제로 삭제할 수 있습니다.
rd /s /q c:\foobar
모두가 빠진 것은 인터넷 검색이 반환하는 모든 페이지가 ( 거의 ) 겉보기에 ( 거의 ) 모든 페이지에 대한 정확한 대체 rd
가 아니라는 것입니다. 이 명령은 디렉토리 와 파일 모두에 대해 작동 하여 하나의 편리한 다목적 삭제 명령이되었습니다. 다음 두 가지가 모두 유효합니다.deltree
windows deltree
deltree
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
. rd
and 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
.
대안은 타사 도구를 얻는 것입니다.하지만 하나를 찾는 것은 검색 쿼리 작성의 실제 연습입니다.
rd /s foobar.txt
, 확신하는 경우 메시지가 표시되고 예라고 말하면 (또는 /q
스위치를 사용 ) 오류가 발생합니다The directory name is invalid.
RMDIR /S
있으므로 한 번에 파일과 폴더를 모두 삭제할 수있는 방법이 없다고 말하는 것은 실제로 잘못된 것입니다.
rd /s
는 디렉토리 에만 적용되며 그 안의 파일 에는 적용 되지 않습니다 . 그 안에있는 파일을 삭제하려면 rd
디렉토리 자체에서을 사용해야 합니다. 예를 들어, rd c:\target\foobar.txt
를 사용해야 한다고 말할 rd /s c:\target
수 없지만 디렉토리 자체는 삭제하지 않고 내용 만 삭제할 수 있습니다. deltree
그렇게 할 수는 있지만 rd /s
할 수는 없지만 rd /s
디렉토리 자체도 삭제합니다.
RMDIR /S
- 없습니다 rd /s
. 그러나을 사용하더라도 rd
디렉토리가 없어지면 파일이 어떻게 제거되지 않습니까? 그렇지 않은 경우에도 파일은 사실상 분리되어 시스템에 의해 가비지 수집되어야합니다. 그리고 그것이 일어나지 않더라도, 디렉토리를 다시 생성하면 확실히 그렇습니다. 마술처럼 파일 목록을 다시 얻지는 못합니다. 포인터는 본질적으로 제거됩니다. 그래서 당신은 다시 그 파일을 삭제할 수 없기 때문에 그 공간을 다시 얻지 못한다고 말하는 것 rd /s
입니까? 그게 끔찍한 버그가 될 거라고 확신하지 못합니다. 요점은 파일 및 디렉토리를 삭제하는 것입니다.
cd Documents
, rd /s test
, 디렉토리 및 텍스트 파일이 제거됩니다. rmdir /s test
작동합니다. 당신은 절대로 사용하려고 rd /s C:\Users\me\Documents\test\test.txt
하지 않습니다. 그것은 절대적으로 어리석은 일입니다. 그러나 파일 이름이 아닌 디렉토리에서 명령을 사용할 수 있고 사용해야합니다. 그러나 디렉토리를 제거하면 파일을 제거 할 수 있습니다.
RMDIR 또는 RD 명령으로 대체되었습니다.
/ S를 사용하여 모든 하위 디렉터리 삭제
/ Q와 함께 조용히 사용
예:
RMDIR /S /Q Folder2Delete
RD /S /Q Folder2Delete
선적 서류 비치:
향수를 불러 일으키며 내 자신의 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 *
요즘에는 Powershell을 사용하여 동일한 작업을 수행 할 수 있습니다.
powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"
실제로 최신 Windows 운영 체제의 RMDIR 및 RD 명령은 단일 명령에서 Win 98의 명령 RD 및 Deltree를 모두 병합합니다. RD.exe 및 RMDIR.exe를 찾을 수없는 이유는 내부 명령입니다.
이 "RD /?"를 입력하여 더블 qout이없는 cmd에서는 원하는 것을 정확하게 얻을 수 있습니다.
이것을 사용하십시오 :
cd (your directory here)
del *.* /f /s /q