디렉토리의 모든 파일 및 폴더 삭제
무선 툴킷의 캐시 폴더에 있는 모든 폴더와 파일을 삭제하는 배치 파일을 원합니다.
현재 다음을 가지고 있습니다.
cd "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS"
del *.db
그러면 RMS 디렉토리에 있는 모든 .db 파일이 삭제되지만 이 디렉토리에서 모든 파일을 삭제합니다.이거 어떻게 해?
용도:
배치 파일 생성
다음 텍스트를 배치 파일에 복사하십시오.
set folder="C:\test" cd /d %folder% for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
모든 파일과 폴더가 삭제됩니다.
del *.*
대신del *.db
그러면 모든 것이 제거됩니다.
IF EXIST "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" (
rmdir "C:\Users\tbrollo\j2mewtk\2.5.2\appdb\RMS" /s /q
)
폴더와 폴더 자체에서 모든 항목이 삭제됩니다.
방금 346이 올린 글에서 정리한 건데
set folder="C:\test"
IF EXIST "%folder%" (
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)
)
변수에 정의된 폴더가 먼저 존재하는지 빠르게 확인하고 디렉토리를 폴더로 변경한 후 내용을 삭제합니다.
del *.*
는 파일만 삭제하고 하위 디렉토리는 삭제하지 않습니다.디렉토리의 내용을 축소하려면 , 다음의 스크립트를 사용할 수 있습니다.
@echo off
setlocal enableextensions
if {%1}=={} goto :HELP
if {%1}=={/?} goto :HELP
goto :START
:HELP
echo Usage: %~n0 directory-name
echo.
echo Empties the contents of the specified directory,
echo WITHOUT CONFIRMATION. USE EXTREME CAUTION!
goto :DONE
:START
pushd %1 || goto :DONE
rd /q /s . 2> NUL
popd
:DONE
endlocal
그pushd
하위 디렉토리를 삭제할 디렉토리로 변경합니다.그럼 언제rd
현재 디렉토리와 모든 서브 디렉토리의 삭제를 요구합니다.서브 디렉토리의 삭제는 성공하지만, 현재 디렉토리의 삭제는 실패합니다.이것은 현재 디렉토리에 있기 때문입니다.이로 인해 다음과 같은 오류가 발생합니다.2> NUL
스왈로우즈(2는 에러 스트림).
다음을 사용하여 이 작업을 수행할 수 있습니다.del
및 그/S
flag(모든 서브 디렉토리에서 모든 파일을 다시 검색하도록 지시):
del /S C:\Path\to\directory\*
RD 명령도 사용할 수 있습니다.프롬프트 없이 재귀적으로 삭제:
@RD /S /Q %VAR_PATH%
set "DIR_TO_DELETE=your_path_to_the_folder"
IF EXIST %DIR_TO_DELETE% (
FOR /D %%p IN ("%DIR_TO_DELETE%\*.*") DO rmdir "%%p" /S /Q
del %DIR_TO_DELETE%\*.* /F /Q
)
사용하다
set dir="Your Folder Path Here"
rmdir /s %dir%
mkdir %dir%
이 버전은 다음 사항을 묻지 않고 삭제합니다.
set dir="Your Folder Here"
rmdir /s /q %dir%
mkdir %dir%
예:
set dir="C:\foo1\foo\foo\foo3"
rmdir /s /q %dir%
mkdir %dir%
이것으로 해결됩니다.C:\foo1\foo\foo\foo3
.
(나는 압둘라 사부인의 답변을 언급하고 싶다.내가 그를 따라하는 것에 대해 혼동이 있었다.나는 그의 투고를 알아차리지 못했다.melpomene이 오류를 지적해 주셔서 감사합니다!)
다음을 시도해 보세요. 저는 좋아요.
"C:\tmp" 폴더에 데이터를 덤프하는 어플리케이션이 있는데, 다음 어플리케이션이 가장 적합합니다.데이터를 삭제하기 위해 예, 아니오도 묻지 않습니다.5분마다 실행되도록 일정을 잡았다.
cd "C:\tmp"
del *.* /Q
더 좋은 것은, 예를 들어, 아래 있는 모든 것을 제거하고 싶다고 가정해 봅시다.C:\windows\temp
폴더입니다.
@echo off
rd C:\windows\temp /s /q
로보카피를 사용하여 빈 폴더를 지울 폴더에 미러링할 수 있습니다.
robocopy "C:\temp\empty" "C:\temp\target" /E /MIR
실제 폴더를 제거하거나 다시 만들 수 없는 경우에도 작동합니다.
기존의 빈 디렉토리가 필요합니다.
클리어디르 같은 간단한 도구를 사용하는 것이 좋습니다.따라서 배치 파일에 다음과 같이 쓸 수 있습니다.
cleardir path/to/dir
빈 디렉토리가 .dir
느리지만, "를 조금 느리지만, 여전히 "문제"를 해결합니다.
저는 이 툴의 저자 =)
가장 쉬운 방법은 다음과 같습니다.
- *.txt 파일 생성
- 쓰기: rmdir /q /s . dir
- 파일을 클리어하는 폴더에 *.bat로 저장합니다(NUKE.bat 파일을 호출할 수 있습니다).
- 켜다
경고!
확인 요청 없이 폴더 내의 모든 항목이 삭제됩니다!!!
현명한 절약 장소를 선택하세요.
간단한 답변:
C:
del /S /Q C:\folderName\otherFolderName\*
C:
D:에서 C: 또는 C:에서 D:(또는 다른 것)로 전환해야 하는 경우 중요
/S
되었습니다.
/Q
그런 건 않아요.
차 조심해, 이건 너무 심해.
중 하나로 할 수는 .rmdir
★★★★★★★★★★★★★★★★★」del
삭제:
rmdir /s /q
에서는 와일드카드 파라미터를 사용할 수 없습니다. ★★★★★★★★★★★★★★★★★.rmdir /s /q *
에러가 발생합니다.del /s /f /q
모든 파일은 삭제되지만 빈 하위 디렉토리는 유지됩니다.
제가 선호하는 솔루션은 (다른 많은 배치 파일에서 사용한 것과 같이) 다음과 같습니다.
rmdir /s /q . 2>NUL
GregM 답변의 수정 버전입니다.
set folder="C:\test"
cd /D %folder%
if NOT %errorlevel% == 0 (exit /b 1)
echo Entire content of %cd% will be deleted. Press Ctrl-C to abort
pause
REM First the directories /ad option of dir
for /F "delims=" %%i in ('dir /b /ad') do (echo rmdir "%%i" /s/q)
REM Now the files /a-d option of dir
for /F "delims=" %%i in ('dir /b /a-d') do (echo del "%%i" /q)
REM To deactivate simulation mode remove the word 'echo' before 'rmdir' and 'del'.
@echo off
@color 0A
echo Deleting logs
rmdir /S/Q c:\log\
ping 1.1.1.1 -n 5 -w 1000 > nul
echo Adding log folder back
md c:\log\
당신은 올바른 길을 가고 있었어요.삭제한 폴더를 다시 추가하려면 코드를 추가하세요.
언급URL : https://stackoverflow.com/questions/6836566/delete-all-files-and-folders-in-a-directory
'programing' 카테고리의 다른 글
VBA 참조 카운트 - 객체 파괴 (0) | 2023.04.17 |
---|---|
Excel through vba에서 행 전체가 공백인지 확인하는 방법 (0) | 2023.04.17 |
리모트 브랜치가 삭제된 오리진에서 가져오시겠습니까? (0) | 2023.04.17 |
Bash 스크립트의 인스턴스가 1개만 실행되도록 하는 가장 좋은 방법은 무엇입니까? (0) | 2023.04.17 |
SQL Server 문자열에서 모든 공간 제거 (0) | 2023.04.17 |