Windows의 명령 프롬프트에서 특정 디렉토리의 파일 / 하위 폴더를 삭제하는 방법


308

%pathtofolder%를 들어, 폴더의 전체 경로임을 분명히하기 위해 이라는 변수 가 있습니다.

이 디렉토리의 모든 단일 파일과 하위 폴더를 삭제하고 싶지만 디렉토리 자체는 아닙니다.

그러나 '이 파일 / 폴더가 이미 사용 중입니다'와 같은 오류가있을 수 있습니다 ... 그러면 계속 진행하고 해당 파일 / 폴더를 건너 뛰십시오.

이것에 대한 명령이 있습니까?



Windows가 폴더를 삭제하는 것이 얼마나 어려운지 ... 또는 점으로 시작하는 폴더를 만드는 것은 Windows의 Bash 통합에 대해 감사합니다! rm -rf path\to\folderWindows 10에서 작동합니다 (또는 Git Bash에서 올 수 있습니다 ... 어쨌든 시도해보십시오!)
Stijn de Witt

답변:


256

이 쉘 스크립트를 사용하여 C:\Temp source 내의 폴더와 파일을 정리할 수 있습니다 .

del /q "C:\Temp\*"
FOR /D %%p IN ("C:\Temp\*.*") DO rmdir "%%p" /s /q

위 명령을 포함하는 배치 파일 (예 : delete.bat)을 작성하십시오. delete.bat 파일이있는 위치로 이동 한 후 delete.bat 명령을 실행하십시오.


20
나는 그것을 시도했지만 불행히도 삭제되지 않은 파일은 하위 폴더 만 삭제됩니다. 예를 들어 Test라는 폴더가 있습니다. 여기에는 "Ripon"및 "Wasim"이라는 두 개의 폴더가 있으며 "riponalwasim.txt"라는 파일이 있습니다. 하위 폴더 Ripon 및 Wasim은 삭제되었지만 riponalwasim.txt는 삭제되지 않았습니다.
Ripon Al Wasim

16
명령 줄에서 직접 실행하려면 단일 백분율 기호를 사용하십시오.%p
Alex

2
슬프게도 2 줄이 걸리지 만 적어도 작동합니다! 나는 작동하는 "한 줄짜리"를 찾는 것에 지쳤으며, 이것과 함께 갈 것입니다, 감사합니다!
nightcoder

2
'&&'연산자를 사용하여 bat 파일없이 한 줄에 두 개의 명령을 실행할 수 있습니다 ( '%%'대신 단일 '%'에 주목). 델 / s / q "myfolder *"&& FOR / D % p IN ( "myfolder *") DO rmdir "% p"/ s / q
ravinsp

</ F "delims ="( 'dir / b / a-d')의 %% i do (echo del "%% i"/ q)> 파일에 도움이 될 수 있습니다 (반향 제거)
grenix

340

rmdir 내가 가장 좋아하는 명령입니다. 하위 폴더가있는 대용량 파일 및 폴더를 삭제하는 데 사용됩니다. 백업이 작성되지 않으므로이 명령을 실행하기 전에 파일을 안전하게 복사했는지 확인하십시오.

RMDIR "FOLDERNAME" /S /Q

이렇게하면 폴더와 모든 파일 및 하위 폴더가 자동으로 제거됩니다.


65
이것은 OP가 유지하려는 경로 폴더를 제거하는 것으로 보입니다.
Fuzz Evans

4
이렇게하면 폴더 자체가 제거되므로 다른 명령을 추가해야합니다 md FOLDERNAME(아래 @rakoczyn의 답변 참조).
thdoan

4
여기서 "백업이 생성되었습니다"는 무슨 뜻입니까? 어떤 종류의 백업도 만들 수있는 것을 볼 수 없습니다 ...
Paul Groke

1
디렉토리가 비어 있지 않습니다. 메시지가 응답으로 도착했습니다!
Jamshaid Kamran

10
폴더 자체를 제거하지 않으려면 이전에 현재 디렉토리로 만든 다음 "."를 사용하십시오. FOLDERNAME (으)로 ACL을 유실 할 수 있으므로 나중에 다시 작성하는 것은 반드시 동일하지 않습니다. cd "FOLDERNAME" RD . /S /Q
Moritz 둘 모두

85

내가 생각할 수있는 가장 간단한 해결책은 다음과 같이 전체 디렉토리를 제거하는 것입니다.

RD /S /Q folderPath

그런 다음이 디렉토리를 다시 작성하십시오.

MD folderPath

5
삭제하지만 새 폴더를 만들 수없는 권한은 어떻게 되나요? 나는 그것이 가능하기를 희망한다 :)
Sandy

13
이는 디렉토리 노드에 대한 파일 시스템에 경쟁을 도입하기 때문에 나쁜 해결책입니다. 즉, 두 번째 명령이 바로 실행되면 실패 할 수 있습니다.
Rok Strniša

22
또한 디렉토리에 특별한 권한이있는 경우 나쁜 해결책은 방금 ahem (whoops)
Immortal Blue

'디렉토리가 비어 있지 않습니다.'라는 응답으로 연기하지 마십시오. 명령을 두 번만 실행하십시오 :-)
Kieran Ryan

1
RD와 RMDIR은 같은 명령이며 누군가가 같은 대답을 언급 한 후 9 개월 동안이 답변을 게시 한 이후 사람들이 왜 포인트를 주나요?
전환

51

그러면 폴더와 파일이 제거되고 폴더가 남게됩니다.

pushd "%pathtofolder%" && (rd /s /q "%pathtofolder%" 2>nul & popd)

4
이 방법에 대해 잘 모르는 사람은 디렉토리를 다시 만들지 않습니다. 이 없으면 2>nul"다른 프로세스에서 파일을 사용 중이므로 프로세스가 파일에 액세스 할 수 없습니다."
Rok Strniša

6
나는 Windows가 일부 프로그램에서 사용중인 파일과 폴더를 삭제할 수 없다는 것을 싫어합니다. 그리고 나는 당신이이 1 개의 강선에 당신의 호의에 그것을 사용한 것을 사랑합니다.
andref

그래서이 우버 매직은 Windows에서 폴더를 비우는 방법입니다 ?? 인상적 :)
mlvljr

3
@mlvljr 부모 폴더도 유지하려는 경우에만. RD /?폴더를 비우는 간단한 방법을 보여줍니다.
foxidrive

1
시작 위치로 돌아와야하는 경우에 좋습니다 CD mypath && RD /S .. 그렇지 않으면 충분합니다. 나는 길을 두 번 반복해야한다는 것을 좋아하지 않습니다. 길이 길면 읽기가 어렵습니다. set p="mypath"처음에을 추가하겠습니다 .
Amit Naidu

39
@ECHO OFF

SET THEDIR=path-to-folder

Echo Deleting all files from %THEDIR%
DEL "%THEDIR%\*" /F /Q /A

Echo Deleting all folders from %THEDIR%
FOR /F "eol=| delims=" %%I in ('dir "%THEDIR%\*" /AD /B 2^>nul') do rd /Q /S "%THEDIR%\%%I"
@ECHO Folder deleted.

EXIT

... 주어진 디렉토리 아래의 모든 파일과 폴더를 삭제하지만 디렉토리 자체는 삭제하지 않습니다.


4
이것은 정답이어야합니다 .. 간단하게 만드세요. deletemyfoldercontents.bat 파일 .. 당신의 경로에 튀어 나와 그것은 매력처럼 작동합니다 ..
timbrown

3
DEL 명령 행 미스 옵션은 /A또한 숨겨진 속성 세트 파일을 삭제하고 %dir%\*같은 큰 따옴표로 묶어야한다 "%dir%\*"공백이나 이러한 문자 중 하나를 포함하는 디렉토리에 대한 또한 작업에 &()[]{}^=;!'+,`~. 그리고 위한 명령 줄을 수정해야 for /F "eol=| delims=" %%I in ('dir "%dir%\*" /AD /B 2^>nul') do rd /Q /S "%dir%\%%I"인해 위한 숨겨진 속성 세트를 무시 디렉토리. 옵션이있는 DIR 은 이름만으로 모든 디렉토리를 /AD /B출력 합니다 . BTW : dir환경 변수에 적합한 이름이 아닙니다.
Mofi

1
하지 않습니다 삭제 하위 폴더
RMiranda

1
@RMiranda, 내 테스트에서 OP가 요청 한대로 정확하게 수행합니다. 하위 폴더를 삭제하지 않는 경우가 있습니까?
thepip3r

이 답변은 " '이 파일 / 폴더가 이미 사용 중입니다'와 같은 오류가있을 수 있습니다. 이런 경우에는 해당 파일 / 폴더를 계속 진행하고 건너 뛰어야합니다." ?
Peter Mortensen

30
CD [Your_Folder]
RMDIR /S /Q .

RMDIR 명령이 현재 폴더에 액세스 할 수 없어서 삭제할 수 없다는 오류 메시지가 표시됩니다.

업데이트 :

에서 유용한 의견 (덕분에 리츠 모두 ), 당신은 추가 할 수 &&있으므로, 사이 RMDIR경우 실행되지 않습니다 CD명령 (예 : 잘못 입력 디렉토리 이름을) 실패

CD [Your_Folder] && RMDIR /S /Q .

에서 Windows 명령 줄 참조 :

/ S : 디렉토리 트리 (지정된 디렉토리 및 모든 하위 디렉토리를 포함한 모든 파일)를 삭제합니다.

/ Q : 자동 모드를 지정합니다. 디렉토리 트리를 삭제할 때 확인 메시지가 표시되지 않습니다. / q는 / s가 지정된 경우에만 작동합니다.


1
이것은 임시 파일을 비우는 데 완벽하지만 cd [Your_Folder]매우 중요합니다. 디렉토리 자체를 삭제하지 않도록 기억해야합니다 ...
sage

5
이것이 올바른 해결책입니다. &&줄 바꿈 대신 명령 사이에 추가 하면 실패한 CD로부터 안전합니다.
Moritz 둘 모두

이것은 간단하고 올바른 솔루션입니다. Azure 명령 셸에서도 작동합니다!
Philippe

꽤 나쁜 해결책 ... 예를 들어 svn 업데이트를 위해이 명령 줄 삭제가 필요합니다.이 업데이트를 사용하기 전에 svn을 업데이트하기 전에 모든 파일과 폴더를 삭제하고 싶습니다. 체크인 한 항목 만 있습니다. RMDIR / S / Q 수행 또한 SVN 링크를 제거하고, 따라서 어떤 SVN 폴더 폴더 더 이상하게
도미니크 Lemberger

이것은 이전 네 가지 답변과 어떻게 다릅니 까?
Peter Mortensen

9

RD는 REMOVE Directory를 나타냅니다.

/ S : 폴더 자체 외에 모든 파일과 하위 폴더를 삭제합니다. 이것을 사용하여 전체 폴더 트리를 제거하십시오.

/ Q : Quiet-YN 확인 표시 안 함

예 :

RD /S /Q C:/folder_path/here

1
무엇 /S/Q의미 하는지 설명 할 수있는 유일한 사람 이라는
의견에 찬성

2
아니요 . 디렉토리 자체와 rd동일 rmdir하며 디렉토리 자체를 제거하며 OP가 원하는 것이 아닙니다.
WesternGun

이 답변은 " '이 파일 / 폴더가 이미 사용 중입니다'와 같은 오류가있을 수 있습니다. 이런 일이 발생하면 계속 진행하고 해당 파일 / 폴더를 건너 뛰어야합니다."? 예를 들어 계속하지 않고 완전히 중단합니까?
Peter Mortensen

8

Powershell을 사용합니다

Remove-Item c:\scripts\* -recurse

폴더 자체가 아닌 폴더의 내용이 제거됩니다.


rhellem의 답변은 최근에 이루어졌지만 실제로는 나를 위해 이것을 할 유일한 답변입니다. (Win 8.1, 선택의 여지가 없음)
Philologon

2
배치 명령 줄에서 :powershell -Command "Remove-Item 'PathToMyDirectory\*' -Recurse -Force"
Rosberg Linhares

"*"가 필요하거나 폴더가 제거됩니다.
mhenry1384

7

foxidrive가 게시 한 단일 명령 줄을 제외 하고 2018-06-01에 게시 된 답변 은 실제로 모든 파일과 모든 폴더 / 디렉토리를 삭제했습니다 %PathToFolder%. 이것이 매우 간단한 단일 명령 줄로 하나 이상의 답변을 게시하여 폴더의 모든 파일과 하위 폴더를 삭제하고 DEL을 사용하여 2018-06-01에 게시 된 다른 모든 답변을 설명하는 더 복잡한 솔루션이있는 배치 파일을 배치하는 이유입니다 및 FORRD는 완전히 폴더를 정리하지 못했습니다.


배치 파일로도 사용할 수있는 간단한 단일 명령 줄 솔루션 :

pushd "%PathToFolder%" 2>nul && ( rd /Q /S "%PathToFolder%" 2>nul & popd )

이 명령 행에는 차례로 실행되는 세 개의 명령이 있습니다.

첫 번째 명령 PUSHD 는 스택에서 현재 디렉토리 경로를 푸시 한 다음 %PathToFolder%명령 프로세스를 실행하기 위해 현재 디렉토리를 만듭니다 .

명령 확장이 기본적으로 활성화되어 있기 때문에 기본적으로 UNC 경로 에서도 작동합니다 .이 경우 PUSHD 는 지정된 네트워크 리소스를 가리키는 임시 드라이브 문자를 만든 다음 새로 정의 된 드라이브 문자를 사용하여 현재 드라이브와 디렉토리를 변경합니다.

지정된 디렉토리가 전혀 존재하지 않는 경우 PUSHDSTDERR 을 처리하기 위해 다음 오류 메시지를 출력 합니다.

시스템이 지정된 경로를 찾을 수 없습니다.

이 오류 메시지는 2>nul장치 NUL 로 리디렉션하여 억제됩니다 .

다음 명령 RD 는 현재 명령 프로세스의 현재 디렉토리를 지정된 디렉토리로 변경 한 경우에만 실행됩니다. 즉, 지정된 디렉토리가 존재합니다.

명령 RD 옵션과 /Q/S디렉토리를 제거 조용히 모든과 하위 디렉토리 지정된 디렉토리가 숨김 속성을 가진 또는 읽기 전용 속성 세트로 파일이나 폴더가 포함 된 경우에도 마찬가지입니다. 시스템 속성은 파일이나 폴더의 삭제를 막지 않습니다.

삭제되지 않은 부분은 다음과 같습니다.

  1. 실행중인 프로세스의 현재 디렉토리로 사용되는 폴더. 폴더가 실행중인 프로세스의 현재 디렉토리로 사용되는 경우 해당 폴더에 대한 전체 폴더 트리를 삭제할 수 없습니다.

  2. 실행중인 응용 프로그램 / 프로세스에서 열린 파일을 삭제하지 못하도록 파일 열기 권한이 파일 열기에서 설정된 상태로 실행중인 프로세스가 현재 연 파일 이러한 열린 파일은 열린 파일에 대한 전체 폴더 트리의 삭제도 방지합니다.

  3. 현재 사용자가 파일 / 폴더를 삭제하는 데 필요한 (NTFS) 권한이없는 파일 / 폴더는이 파일 / 폴더에 대한 폴더 트리의 삭제도 방지합니다.

폴더를 삭제하지 않는 첫 번째 이유는이 명령 행에서 폴더 자체가 아닌 지정된 폴더의 모든 파일 및 하위 폴더를 삭제하는 데 사용됩니다. 폴더는 명령 프로세스를 실행하기 위해 현재 디렉토리로 일시적으로 만들어 져서 폴더 자체의 삭제를 방지합니다. 물론 이것은 명령 RD에 의해 오류 메시지를 출력합니다 .

프로세스가 다른 프로세스에서 파일을 사용 중이므로 파일에 액세스 할 수 없습니다.

실제로 폴더는 다른 프로세스, 명령 RD 를 실행 한 현재 명령 프로세스에서 사용하고 있으므로 파일 은 잘못된 용어 입니다. 실제로, 폴더는 파일 시스템의 파일 속성 디렉토리 가 있는 특수 파일 이며이 오류 메시지를 설명합니다. 그러나 파일 시스템 관리에 너무 깊이 들어가고 싶지 않습니다.

위에서 언급 한 세 가지 이유로 인해 발생할 수있는 다른 모든 오류 메시지와 같이이 오류 메시지 2>nul는 핸들 STDERR 에서 디바이스 NUL 로 경로 재지 정하여 억제됩니다 .

세 번째 명령 인 POPD 는 명령 RD 의 종료 값과 독립적으로 실행 됩니다.

POPD 는 스택에서 PUSHD에 의해 푸시 된 디렉토리 경로를 팝하고 명령 프로세스를 실행하기 위해 현재 디렉토리를이 디렉토리로 변경합니다. 즉, 초기 현재 디렉토리를 복원합니다. POPD 는 UNC 폴더 경로의 경우 PUSHD 에 의해 생성 된 임시 드라이브 문자를 삭제합니다 .

참고 : 초기 현재 디렉토리가 더 이상 존재하지 않는 정리할 디렉토리의 하위 디렉토리 인 경우 POPD 가 초기 현재 디렉토리를 자동으로 복원하지 못할 수 있습니다. 이 특별한 경우 %PathToFolder%현재 디렉토리로 남아 있습니다. 따라서 하위 디렉토리가 아닌 위의 명령 줄을 실행하는 것이 좋습니다 %PathToFolder%.

한 가지 더 흥미로운 사실 :C:\Temp 공유 이름으로 로컬 디렉토리 를 공유 Temp하고 Windows 7 \\%COMPUTERNAME%\Temp\CleanTest에서 환경 변수 PathToFolder에 할당 된 UNC 경로를 사용하여 UNC 경로를 사용하여 명령 줄을 시도했습니다. 명령 줄 을 실행하는 현재 디렉토리가 공유 로컬의 하위 디렉토리 인 경우 즉, UNC 경로를 사용하여 액세스 폴더 C:\Temp\CleanTest\Subfolder1, Subfolder1삭제되는 RD , 옆 POPD는 제작에 자동으로 실패 C:\Temp\CleanTest\Subfolder1를 다시 결과 현재 디렉토리에 Z:\CleanTest실행 명령 프로세스의 현재 디렉토리로 남아있다. 매우 특별한 경우에 임시 드라이브 문자는 현재 디렉토리가 다음과 같이 변경 될 때까지 남아 있습니다.cd /D %SystemRoot%실제로 존재하는 로컬 디렉토리에. 불행히도 POPD는초기 현재 디렉토리를 복원하지 못하면 0보다 큰 값으로 종료하지 않고 POPD 의 종료 코드 만 사용하여이 특별한 오류 조건을 감지 할 수 없습니다 . 그러나 UNC 경로는 일반적으로 로컬 파일 및 폴더에 액세스하는 데 사용되지 않으므로이 특별한 오류가 발생하는 사람은 없다고 가정 할 수 있습니다.

사용 된 명령을 더 잘 이해하려면 명령 프롬프트 창을 열고 다음 명령을 실행 한 다음 각 명령에 대해 표시된 도움말을주의해서 읽으십시오.

  • pushd /?
  • popd /?
  • rd /?

Windows 배치 파일을 사용하여 여러 명령을 단일 라인 연산자 설명 &&&여기에 사용합니다.


다음으로 DEL 명령을 사용하여 파일을 삭제 %PathToFolder%하고 FORRD 를 사용하여 하위 폴더를 삭제하는 배치 파일 솔루션을 살펴 보겠습니다 %PathToFolder%.

@echo off
setlocal EnableExtensions DisableDelayedExpansion

rem Clean the folder for temporary files if environment variable
rem PathToFolder is not defined already outside this batch file.
if not defined PathToFolder set "PathToFolder=%TEMP%"

rem Remove all double quotes from folder path.
set "PathToFolder=%PathToFolder:"=%"

rem Consisted the folder path only of double quotes?
if not defined PathToFolder goto EndCleanFolder

rem Remove a backslash at end of folder path.
if "%PathToFolder:~-1%" == "\" set "PathToFolder=%PathToFolder:~0,-1%"

rem Consisted folder path only of a backslash (with one or more double quotes)?
if not defined PathToFolder goto EndCleanFolder

rem Delete all files in specified folder including files with hidden
rem or read-only attribute set, except the files currently opened by
rem a running process which prevents deletion of the file while being
rem opened by the application, or on which the current user has not
rem the required permissions to delete the file.
del /A /F /Q "%PathToFolder%\*" >nul 2>nul

rem Delete all subfolders in specified folder including those with hidden
rem attribute set recursive with all files and subfolders, except folders
rem being the current directory of any running process which prevents the
rem deletion of the folder and all folders above, folders containing a file
rem opened by the application which prevents deletion of the file and the
rem entire folder structure to this file, or on which the current user has
rem not the required permissions to delete a folder or file in folder tree
rem to delete.
for /F "eol=| delims=" %%I in ('dir "%PathToFolder%\*" /AD /B 2^>nul') do rd /Q /S "%PathToFolder%\%%I" 2>nul

:EndCleanFolder
endlocal

배치 파일은 먼저 환경 변수 PathToFolder가 큰 따옴표없이 백 슬래시없이 폴더 경로로 실제로 정의되도록합니다. 끝에있는 백 슬래시는 문제가되지 않지만 PathToFolder배치 파일 실행 중 값이 다른 문자열과 연결되어 있기 때문에 폴더 경로의 큰 따옴표는 문제가 될 수 있습니다 .

두 줄이 중요합니다.

del /A /F /Q "%PathToFolder%\*" >nul 2>nul
for /F "eol=| delims=" %%I in ('dir "%PathToFolder%\*" /AD /B 2^>nul') do rd /Q /S "%PathToFolder%\%%I" 2>nul

DEL 명령 은 지정된 디렉토리의 모든 파일을 삭제하는 데 사용됩니다.

  • 옵션 /A은 옵션 을 사용하지 않고 DEL 이 무시할 숨겨진 속성을 가진 파일을 포함하여 실제로 모든 파일을 처리하는 데 필요합니다 /A.
  • /F읽기 전용 속성이 설정된 파일을 강제로 삭제하려면 이 옵션 이 필요합니다.
  • /Q여러 파일을 실제로 삭제해야 할 경우 사용자에게 알리지 않고 여러 파일을 자동으로 삭제하려면 이 옵션 이 필요합니다.
  • >nulSTDOUT 을 처리하기 위해 작성된 파일 이름의 출력을 파일이 현재 열려 있거나 사용자가 파일을 삭제할 권한이 없기 때문에 삭제할 수없는 장치 NUL 로 장치 를 리디렉션하는 데 필요 합니다.
  • 2>nulSTDERR 핸들에서 삭제할 수없는 각 파일에 대한 오류 메시지 출력 을 디바이스 NUL 로 리디렉션하는 데 필요합니다 .

FORRD 명령 은 지정된 디렉토리에서 모든 서브 디렉토리를 제거하는 데 사용됩니다. 그러나 FOR의 경우 숨겨진 속성이 설정된 하위 디렉토리를 무시 for /D하기 때문에 사용되지 않습니다 . 이러한 이유로 백그라운드에서 시작된 별도의 명령 프로세스에서 다음 명령 행을 실행하는 데 사용됩니다 .for /F%ComSpec% /c

dir "%PathToFolder%\*" /AD /B 2>nul

DIR/B 은 속성 이 있는 디렉토리 항목 D, 즉 경로가없는 숨겨진 속성과 같은 다른 속성에 독립적으로 지정된 디렉토리의 모든 하위 디렉토리 이름 으로 인해 베어 형식으로 출력됩니다 . STDERR 핸들에서 발견 된 디렉토리가없는 디렉토리에서 DIR2>nul의해 오류 메시지 출력 을 디바이스 NUL 로 재지 정하는 데 사용됩니다 .

리디렉션 연산자 >캐럿 문자로 이스케이프해야합니다, ^상의, 대한의 명령 줄 Windows 명령 인터프리터가 명령을 실행하기 전에이 명령 줄을 처리하는 리터럴 문자로 해석 될 FOR 하는 임베디드 실행한다 dir별도의 명령 과정에서 명령 줄 시작 백그라운드에서.

FOR 는 경로가없는 서브 디렉토리의 이름이며 큰 따옴표로 묶지 않은 시작된 명령 프로세스의 STDOUT 을 처리하기 위해 작성된 캡처 된 출력을 처리 합니다.

옵션이 /F있는 FOR 는 옵션 이없는 DIR/B빈 줄을 출력 하지 않기 때문에 여기서 발생하지 않는 빈 줄을 무시합니다 .

또한 FOR 는 기본 줄 끝 문자 인 세미콜론으로 시작하는 줄을 무시합니다. 디렉토리 이름은 세미콜론으로 시작할 수 있습니다. 이러한 이유로 eol=|수직 막대 문자를 디렉토리 또는 파일 이름으로 가질 수없는 행 끝 문자로 정의하는 데 사용됩니다.

FOR 는 공백과 가로 탭을 구분 기호로 사용하여 행을 하위 문자열로 분할하고 지정된 루프 변수에 첫 번째 공백 / 탭 구분 문자열 만 할당합니다 I. 디렉토리 이름으로 인해 하나 이상의 공백이 포함될 수 있으므로이 분할 동작은 원하지 않습니다. 따라서 delims=행 분리 동작을 사용하지 않고 I항상 완전한 디렉토리 이름 인 루프 변수에 지정되도록 빈 분리 문자 목록을 정의하는 데 사용됩니다 .

명령 에 대한 명령 실행 RD 온 이유입니다 경로없이 각 디렉토리 이름을 RD의 하위 폴더 이름으로 연결됩니다 명령 줄 폴더 경로를 다시 한 번 지정해야합니다.

사용 된 명령과 작동 방식을 이해하려면 명령 프롬프트 창을 열고 다음 명령을 실행 한 다음 각 명령에 대해 표시된 모든 도움말 페이지를주의 깊게 읽으십시오.

  • del /?
  • dir /?
  • echo /?
  • endlocal /?
  • for /?
  • goto /?
  • if /?
  • rd /?
  • rem /?
  • set /?
  • setlocal /?

5

사용 메모장은 텍스트 문서를 작성하고 복사 /이 붙여 넣기 :

rmdir /s/q "%temp%"
mkdir "%temp%"

다른 이름으로 저장 및 파일 이름을 선택 하십시오 .

delete_temp.bat

파일 형식 : 모든 파일로 저장하고 Save 버튼을 .

모든 종류의 계정 (관리자 또는 표준 사용자)에서 작동합니다. 그냥하세요!

이 예제에서는 임시 변수를 사용하지만 다른 변수를 사용할 수 있습니다! PS : Windows OS 만 해당!


매우 쉽고 깨끗한 솔루션
Carlos Liu

4

파일을 삭제하려면

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"

네 맞습니다. 두 단계 여야합니다. 위의 더 투표 된 답변과 비교하여 이유를 설명하기 때문에 더 많은 투표권이 필요합니다.
WesternGun

DEL 명령 행 미스 옵션 /A도 삭제 숨겨진 속성 세트와 옵션을 사용하여 파일을 /F읽기 전용 특성 세트와 마지막 인수 주위에 따옴표를 사용하여 파일도 삭제합니다. 따라서 del /A /F /Q "PATH_TO_FOLDER\*"더 좋습니다. 그리고 위한 명령 줄을 수정해야 for /F "eol=| delims=" %%I in ('dir "PATH_TO_FOLDER\*" /AD /B 2^>nul') do rd /Q /S "PATH_TO_FOLDER\%%I"인해 위한 숨겨진 속성 세트를 무시 디렉토리. 옵션이있는 DIR 은 이름만으로 모든 디렉토리를 /AD /B출력 합니다PATH_TO_FOLDER .
Mofi

이전 답변과 다른 점은 무엇입니까?
Peter Mortensen

4

다음 명령을 사용하여 모든 내용과 상위 폴더 자체를 삭제하면됩니다.

RMDIR [/S] [/Q] [drive:]path            

이것은 이전 두 답변과 어떻게 다릅니 까?
Peter Mortensen

이 답변은 " '이 파일 / 폴더가 이미 사용 중입니다'와 같은 오류가있을 수 있습니다. 이런 경우에는 해당 파일 / 폴더를 계속 진행하고 건너 뛰어야합니다." ?
Peter Mortensen

1

나는 이러한 접근법 중 몇 가지를 시도했지만 제대로 작동하지 않았습니다.

Windows 명령 줄 사이트에서이 2 단계 접근 방식을 찾았습니다 .

forfiles /P %pathtofolder% /M * /C "cmd /c if @isdir==FALSE del @file"

forfiles /P %pathtofolder%  /M * /C "cmd /c if @isdir==TRUE rmdir /S /Q @file"

내가 필요로하고 OP에서 지정한대로 정확하게 작동했습니다.


두 개의 명령 행을 하나의 명령 행으로 결합 할 수 있습니다. forfiles /P "%pathtofolder%" /M * /C "%SystemRoot%\System32\cmd.exe /C if @isdir==FALSE (del /A /F @file) else rd /Q /S @file" DEL 옵션 /A은 숨겨진 속성이 설정된 파일도 삭제하기 위해 추가됩니다. 그렇지 않으면 DEL은의 각 숨겨진 파일에 대해 찾을 수없는 오류 메시지를 출력합니다 %pathtofolder%. 읽기 전용 속성이 설정된 파일도 삭제하기 위해 DEL 옵션 /F이 추가 %pathtofolder%되었습니다. 그렇지 않으면 DEL 이 액세스 거부 오류 메시지를 출력합니다.
Mofi

이 솔루션은의 cmd.exe각 파일 및 각 디렉토리에 대한 인스턴스를 시작하기 때문에 여기에 게시 된 모든 불완전한 솔루션 중 가장 느 %pathtofolder%립니다. 장점은 FORFILESFOR 과 같이 숨겨진 속성이 설정된 디렉토리를 무시 하지 않는다는 것입니다.
Mofi

다시 "영업에 지정된대로 내가 필요하고 그것은 정확하게했다." : " '이 파일 / 폴더가 이미 사용 중입니다'와 같은 오류가있을 수 있습니다 ... 그럴 경우 계속 진행하고 해당 파일 / 폴더를 건너 뛰어야합니다." ?
Peter Mortensen

0
@ECHO OFF
rem next line removes all files in temp folder
DEL /A /F /Q /S "%temp%\*.*"
rem next line cleans up the folder's content
FOR /D %%p IN ("%temp%\*.*") DO RD "%%p" /S /Q

두 번째 줄은 Windows temp 디렉토리의 모든 폴더에서 각 파일의 파일을 제거하고 세 번째 줄은 내용을 포함하여 디렉토리를 정리합니다.
Robie

위한 명령 줄 수정해야 for /F "eol=| delims=" %%I in ('dir "%TEMP%\*" /AD /B 2^>nul') do rd /Q /S "%TEMP%\%%I"인해 위한 숨겨진 속성 세트를 무시 디렉토리. 옵션이있는 DIR 은 이름만으로 모든 디렉토리를 /AD /B출력 합니다%TEMP% .
Mofi

DEL 문서 . / F : "읽기 전용 설정 무시 및 어쨌든 삭제 (FORCE)"
Peter Mortensen

-10

사용하다:

del %pathtofolder%\*.*   /s /f  /q

이렇게하면 %pathtofolder%읽기 전용 파일을 포함하여의 모든 파일과 하위 폴더가 삭제 되고 확인 메시지가 표시되지 않습니다.


9
적에게 % pathtofolder %에 빈 하위 폴더를 남겨 둡니다.
DH

35
% pathtofolder %의 하위 폴더는 삭제하지 않습니다. 나쁘게도 나는이 잘못된 대답에 투표하는 평판이 없다
Vitalii Korsakov

1
Vitalii Korsakov가 지적했듯이 하위 디렉토리에서 모든 파일과 파일을 삭제하지만 OP가 제거 방법을 묻는 하위 디렉토리는 그대로 둡니다.
Fuzz Evans

6
이 명령은 빈 폴더를 남겨 두지 만 허용 된 답변보다 요청 된 내용에 훨씬 더 가깝습니다. 물론 이것은 상황에 따라 다릅니다. 필자의 경우 루트 디렉토리에 남은 파일보다 빈 폴더가 있습니다.
MarcusUA

그러나 다른 클라이언트 시스템이 해당 폴더에 대한 쓰기 액세스 권한이있는 공유 드라이브를 열 때 네트워크 공유에서 열린 폴더 및 하위 폴더를 삭제하는 방법. psfile 및 net files 명령은 파일 세션을 닫지 만 몇 초 후에 다시 생성됩니다. 서버에서 해당 사용자를위한 자동으로 다른 세션 ...
user1954762
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.