명령 프롬프트를 통해 지정된 폴더의 모든 파일 / 하위 폴더를 어떻게 삭제합니까?


42

Windows 7의 배치 파일에서 모든 파일과 하위 폴더를 삭제하고 최상위 폴더를 유지하고 싶습니다. 기본적으로 폴더를 비 웁니다. 그에 대한 명령 줄 명령은 무엇입니까?


3
nitpick은 아니지만 "DOS"가 아닌 "명령 프롬프트"에서이를 수행하는 방법을 찾고 있습니다. Win ME 이후로 DOS 하위 시스템이 없었습니다.
MDMarra

@MarkM : 글쎄요. ntvdm하지만 64 비트 시스템이 시장 점유율을 확보함에 따라 점점 더 관련이 없어지고 있습니다.
Joey

답변:


55

del/S플래그를 사용하여 이를 수행 할 수 있습니다 (모든 서브 디렉토리에서 모든 파일을 제거하도록 지시 함).

del /S C:\Path\to\directory\*

2
너의 것이 낫다 : D +
1-

3
설명 : del은 삭제를 나타내고 S는 재귀를 나타냅니다.
Tamara Wijsman

3
@Tony_Henrich, msdos 명령에 대해 자세히 알아보십시오. computerhope.com/msdos.htm
Moab

3
/ Q를 사용하면 바람직하지 않은 빈 하위 폴더가 유지됩니다.
Tony_Henrich

3
이것은 잘못된 답변이며 왜 많은 표를 얻었는지 모르겠습니다. 사람들이 질문을 완전히 이해하지 못하고 주석을 읽지 않는 것 같습니다! 답변을 살펴보고 올바른 답변을 선택하겠습니다.
Tony_Henrich

22

가장 좋은 해결책 : 예를 들어 부모 디렉토리의 모든 파일과 하위 디렉토리를 삭제하고 싶습니다. "C : \ Users \ Desktop \ New folder \"라고 말할 수 있습니다. 쉬운 방법은 세 가지 명령 아래의 배치 파일을 만드는 것입니다.

cd C : \ 사용자 \ 데스크톱 \ 새 폴더 \

델 * / S / Q

rmdir / S / Q "C : \ Users \ Desktop \ New 폴더 \"

먼저 모든 하위 디렉토리의 모든 파일을 정리 한 다음 비어있는 모든 하위 디렉토리를 정리합니다. 현재 작업 디렉토리는 "\ New folder"와 같은 상위 디렉토리이므로 rmdir 명령은이 디렉토리 자체를 삭제할 수 없습니다.


1
시스템이 루트 폴더를 삭제할 수 없을 때 경고를 제외하고는 매우 잘 작동합니다.
Jerther

2
안좋다. 하드 코딩 된 경로 및 경로를 보면 폴더가 비워지지 않습니다. 제거합니다. 매우 위험합니다. 경로가 종료되거나 철자가 틀리면 현재 폴더에서 파일을 삭제합니다.
Tony_Henrich

1
@Tony_Henrich가 말한 것처럼 rmdir명령은 삭제됩니다New folder
Nuktu

아니요. 실제로 폴더 자체를 삭제하지 않고 "새 폴더"를 완전히 지울 수 있습니다. 유일한 문제는 OS가 상위 폴더를 삭제하지 못하는 경우 경미한 경고를 표시한다는 것입니다. 또한 큰 폴더가 없으면 del 명령이 중복됩니다.이 경우 더 빠를 수 있습니다. 다음과 같이 수정하면됩니다 (주석에 줄 바꿈이 없어서 죄송합니다). set FOLDER = "% userprofile % \ Desktop \ New folder"cd % FOLDER % rmdir / S / Q % FOLDER % \> nul 2> & 1
HSuke

3
진짜 위험 해 누군가 계속해서`C : \ Users \ Desktop \ New folder`를 제거 / 이름 바꾸기하면 CD가있는 첫 번째 줄이 실패하고 배치 파일이 현재 (기본) 디렉토리의 모든 항목을 행복하게 삭제합니다. 작업 디렉토리 또는 C : \ Windows \ System32가 될 수 있습니다
Ishmaeel

9

상위 디렉토리로 이동하십시오.

pushd "Parent Directory"

하위 폴더를 삭제하십시오.

rd /s /q . 2>nul

1
와우, 그것은 hackish이다. :)
Tarnay Kálmán

1
이것은 본질적으로 두 개의 이전 답변과 같습니다.
Scott

위와 동의-이것은 이전 답변의 사본이며 대체하는 명령과 동의어로 대체됩니다. 아직 수행 pushd하지 않은 것을 여기에 추가하지 않습니다 cd.
Hashim

이것은 내가 지금까지 사용할 수 있었던 유일한 것인데, asker가 요구 한 것에 정확히 작동했습니다. 다른 모든 것들은 모든 파일을 삭제합니다. 물론 rmdir /s path-to-folder모든 것이 들어있는 폴더를 삭제하지만 asker는 작업 디렉토리에서 모든 것을 삭제하는 방법을 알고 싶었습니다.
Katz_Katz_Katz

이 답변은 저에게 가장 효과적이었습니다. 다른 모든 대답으로 / Q를 사용할 때 비어 있지 않은 디렉토리는 삭제하지 않았으며 / Q를 사용하지 않을 때는 항상 확인을 요청했습니다.
marijnr

5
rmdir "c:\pathofyourdirectory" /q /s

따옴표를 사용하는 것을 잊지 마십시오. /q /s따라서 모든 저장소가 프롬프트없이 삭제됩니다.


2
문제는 "Windows 7의 배치 파일에서 모든 파일과 하위 폴더를 삭제 하고 최상위 폴더를 유지하고
Werner Henze

5

rmdir을 사용하여 다음과 같이 파일과 하위 폴더를 삭제할 수 있습니다.

rmdir /s/q MyFolderPath

그러나 특히 다음과 같이 rmdir 이전에 del을 사용할 수있는 하위 폴더가 많은 경우 특히 빠릅니다.

del /f/s/q MyFolderPath > nul
rmdir /s/q MyFolderPath

첫 번째 옵션은 "디렉토리가 비어 있지 않습니다"라는 오류를 표시합니다. 두 번째 옵션의 첫 번째 명령은 전체 폴더를 삭제합니다. 내가 원하는 것처럼 유지하지 않습니다. 첫 번째 명령이 전체 폴더를 삭제 한 경우 두 번째 명령은 필요하지 않습니다.
Tony_Henrich

rmdir명령 (모두 동일) 상위 폴더를 삭제합니다. 이것은 질문에 대한 답변 이 아닙니다 . 사람들은 왜 읽지 않습니까?
Hashim

3

모든 하위 폴더를 포함하여 폴더의 모든 파일을 삭제하고 루트 폴더를 그대로 유지하기 위해 일부 오류 조건에 의존하지 않으려면 (다른 대답에서 본 것처럼) 배치 파일을 다음과 같이 만들 수 있습니다.

@echo off

REM Checking for command line parameter
if "%~1"=="" (

    echo Parameter required.
    exit /b 1

) else (

    REM Change directory and keep track of the previous one
    pushd "%~1"

    if errorlevel 1 (

        REM The directory passed from command line is not valid, stop here.
        exit /b %errorlevel%

    ) else (

        REM First we delete all files, including the ones in the subdirs, without confirmation
        del * /S /Q

        REM Then we delete all the empty subdirs that were left behind
        for /f %%D IN ('dir /b /s /a:d "%~1"') DO rmdir /S /Q "%%D"

        REM Change directory back to the previous one
        popd

        REM All good.
        exit /b 0
    )

)

그런 다음 간단히 다음과 같이 호출하면됩니다.

empty_my_folder.bat "C:\whatever\is\my folder"

3

이 세 가지 지침을 박쥐 파일에 넣어서 쉽고 빠르게 수행 할 수 있습니다.

mkdir empty_folder
robocopy /mir empty_folder "path_to_directory"
rmdir empty_folder

이것은 숨겨진 파일이나 시스템 파일을 제거하기 때문에 매우 유용합니다.
weaknespase

1

폴더 이름에 공백이있을 때 나에게 더 효과적이었습니다.

@echo off
REM ---- Batch file to clean out a folder
REM Checking for command line parameter
if "%~1"=="" (

echo Parameter required.
exit /b 1

) else (
echo ***********************************************************************************
    echo *** Deleting all files, including the ones in the subdirs, without confirmation *** 
    del "%~1\*" /S /Q
echo ***********************************************************************************
    REM Deleting all the empty subdirs that were left behind
FOR /R "%~1" %%D IN (.) DO (
    if "%%D"=="%~1\."  (
    echo *** Cleaning out folder: %~1 *** 
    ) else (
    echo Removed folder "%%D"
    rmdir /S /Q "%%D"
    )
) 

    REM All good.
    exit /b 0

)

사람들은 항상 이름에 공백이 있다는 것을 잊습니다.
Kevin Panko

1

파일을 삭제하려면

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

0

이것이 나를 위해 일한 것입니다.

  1. 파일을 삭제하려는 폴더 내부를 탐색하십시오.
  2. 유형: del *
  3. Y 예.
  4. 끝난
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.