cmd 호출로 폴더의 모든 파일과 폴더를 삭제하는 방법


답변:


137

아니, 모르겠어.

어떤 이유로 (ACL, & c.) 원래 디렉토리를 유지하고 대신 실제로 비우고 싶은 경우 다음을 수행 할 수 있습니다.

del /q destination\*
for /d %x in (destination\*) do @rd /s /q "%x"

이것은 먼저 디렉토리에서 모든 파일을 제거한 다음 중첩 된 모든 디렉토리를 반복적으로 제거하지만 전체적으로 최상위 디렉토리를 그대로 유지합니다 (내용 제외).

배치 파일 %내에서 for루프 내에서 두 배가 필요합니다 .

del /q destination\*
for /d %%x in (destination\*) do @rd /s /q "%%x"

3
나는 배치 파일없이 이것을 할 수 있었다. &&를 사용하여 두 연산을 연결합니다.
Matt Broekhuis

1
나는 완전한 Windows-shell 멍청이입니다.이 예제에서 대상을 경로로 설정하려면 어떻게해야합니까?
low_rents

destination필요한 경우 전체를 따옴표로 묶어 경로로 단어 를 바꿉니다.
Joey

4
이 대답은 나를 슬프게 때문에 그것이 가장 좋은 대답입니다
KCD

1
@stenci : 두 번째 줄은 지정된 디렉터리 삭제할 수 있습니다 . 실제로 재귀 적으로 수행하지만 파일을 삭제할 수는 없습니다 . 따라서 디렉터리 내의 모든 항목을 제거하려면 모든 파일과 모든 디렉터리를 제거해야합니다. 이것은 단일 디렉토리와 그 안의 모든 것을 삭제하는 것이 아닙니다 . 내부의 모든 것을 삭제 하고 상위 디렉토리를 유지 하는 것입니다.
Joey

39

del c:\destination\*.* /s /q나를 위해 일했습니다. 나는 그것이 당신에게도 효과가 있기를 바랍니다.


13
모든 파일을 삭제하지만 폴더는 삭제하지 않습니다.
Eric

2
나를 위해 일한 것은 폴더로 이동하는 것입니다. (오른쪽 클릭으로 이동하고 여기에서 cmd 프롬프트 열기를 선택합니다.)del *.*
Daniel L. VanDenBosch

상대 경로의 예del "../../server/front-end\*.*"
FindOutIslamNow

@ DanielL.VanDenBosch, 스크립트 작성이 어렵습니다.
Synetech

29

가장 쉬운 방법은 다음과 같습니다.

rmdir /s /q "C:\FolderToNotToDelete\"

경로의 마지막 "\"는 중요한 부분입니다.


27
이렇게하면 폴더 자체도 삭제됩니다.
Archie 2014

완벽한, 이것은 내가 :) 필요는 무엇인가
gNerb

너무 긴 경로가 재귀 적으로 작동합니까?
eomeroff

2
이것과 결합하면 mkdir C:\FolderToNotToDelete충분했습니다 :)
qbolec

1
(이 방법으로 삭제됩니다) 부모 폴더 ... 지금 다시해야 할 몇 가지 중요한 권한을 보유하고 경우에 문제가 될 수 있습니다
믈라덴 B.

15

예! Powershell 사용 :

powershell -Command "Remove-Item 'c:\destination\*' -Recurse -Force"

너무 나쁜 PowerShell은 번거롭고 부풀 며 매우 느린 짐승입니다. :-|
Synetech

13

하위 폴더 이름에 공백이 포함 된 경우 이스케이프 된 따옴표로 묶어야합니다. 다음 예제는 배치 파일에서 사용되는 명령에 대해이를 보여줍니다.

set targetdir=c:\example
del /q %targetdir%\*
for /d %%x in (%targetdir%\*) do @rd /s /q ^"%%x^"

6

파일을 삭제하려면 :

del PATH_TO_FILE

모든 파일이있는 폴더를 삭제하려면 :

rmdir /s /q PATH_TO_FOLDER

특정 폴더에서 모든 파일을 삭제하는 (폴더 자체를 삭제하지 않음)은 약간 복잡합니다. del /s *.*폴더를 삭제할 수 없지만 모든 하위 폴더에서 파일을 제거합니다. 따라서 두 가지 명령이 필요합니다.

del /q PATH_TO_FOLDER\*.*
for /d %i in (PATH_TO_FOLDER\*.*) do @rmdir /s /q "%i"

다음과 같이 원하는 파일 (폴더 또는 파일)을 삭제하는 스크립트를 만들 수 있습니다 mydel.bat.

@echo off
setlocal enableextensions

if "%~1"=="" (
    echo Usage: %0 path
    exit /b 1
)

:: check whether it is folder or file
set ISDIR=0
set ATTR=%~a1
set DIRATTR=%ATTR:~0,1%
if /i "%DIRATTR%"=="d" set ISDIR=1

:: Delete folder or file
if %ISDIR%==1 (rmdir /s /q "%~1") else (del "%~1")
exit /b %ERRORLEVEL%

사용의 몇 가지 예 :

mydel.bat "path\to\folder with spaces"
mydel.bat path\to\file_or_folder

1

간단한 한 줄 옵션은 파일 시스템 어딘가에 빈 디렉터리를 만든 다음 스위치 와 함께 ROBOCOPY( http://technet.microsoft.com/en-us/library/cc733145.aspx )를 사용하여 /MIR모든 파일을 제거하고 하위 폴더. 기본적으로 robocopy는 보안을 복사하지 않으므로 루트 폴더의 ACL은 그대로 유지되어야합니다.

또한 /r기본 재시도 횟수가 1 백만이므로 재시도 스위치의 값을 설정하려고 할 수도 있습니다.

robocopy "C:\DoNotDelete_UsedByScripts\EmptyFolder" "c:\temp\MyDirectoryToEmpty" /MIR /r:3

0

모든 파일과 하위 폴더를 제거해야하는 33 개의 폴더가있는 색인 폴더가 있습니다. 색인 폴더에서 명령 줄을 열고 다음 명령을 사용했습니다.

for /d in (*) do rd /s /q "%a" & (
md "%a")

한 줄에 입력하면 작동하지 않을 수 있기 때문에 두 줄로 구분했습니다 (첫 번째 줄 다음에 엔터를 누르고 두 번째 줄을 더 추가하라는 메시지가 표시되면). 이 명령은 각 디렉토리를 지운 다음 비어있는 새 디렉토리를 생성하여 원래 디렉토리의 모든 파일과 하위 폴더를 제거합니다.



0

2 단계 만 거치면됩니다. [/ q는 조용함, / f는 강제, / s는 하위 디렉토리]

  1. 제거 할 디렉토리를 비 웁니다.

    del *.* /f/s/q  
    
  2. 디렉토리 제거

    cd ..
    rmdir dir_name /q/s
    

그림보기


0

이것을 시도하면 루트 디렉토리 아래의 모든 MyFolder를 검색하고 MyFolder라는 모든 폴더를 삭제합니다.

for /d /r "C:\Users\test" %%a in (MyFolder\) do if exist "%%a" rmdir /s /q "%%a"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.