dir1 및 dir2의 모든 .jpg 및 .txt 파일 (예 :)을 삭제해야합니다.
내가 시도한 것은 :
@echo off
FOR %%p IN (C:\testFolder D:\testFolder) DO FOR %%t IN (*.jpg *.txt) DO del /s %%p\%%t
일부 디렉토리에서는 작동했습니다. 다른 사람들에서는 그렇지 않았습니다.
예를 들어, 이것은 아무것도하지 않았습니다.
@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t
두 번째 스 니펫에서 내가 무엇을 놓치고 있습니까? 왜 작동하지 않았습니까?
답변
del
명령 과 함께 와일드 카드를 사용 /S
하여 재귀 적으로 수행 할 수 있습니다.
del /S *.jpg
추가
@BmyGuest는 왜 비추천 답변 ( del /s c:\*.blaawbg
)이 내 답변과 다른지 물었습니다 .
있다 거대한 실행의 차이 del /S *.jpg
와는 del /S C:\*.jpg
. 첫 번째 명령은 현재 위치에서 실행되고 두 번째 명령은 전체 드라이브에서 실행 됩니다 .
jpg
두 번째 명령을 사용하여 파일 을 삭제하는 시나리오에서 일부 응용 프로그램이 작동을 멈출 수 있으며 결국 모든 가족 사진을 잃게됩니다. 이것은 매우 성가신 일이지만 컴퓨터는 계속 실행할 수 있습니다.
그러나 일부 프로젝트에서 작업 중이고에서 모든 dll
파일 을 삭제 myProject\dll
하고 다음 배치 파일을 실행하려는 경우 :
@echo off
REM This short script will only remove dlls from my project... or will it?
cd \myProject\dll
del /S /Q C:\*.dll
그런 다음 드라이브에서 모든 dll
파일 을 제거합니다 C:\
. 모든 응용 프로그램이 작동을 멈추고 컴퓨터가 쓸모 없게되며 다음 재부팅시 영원히 갇혀있는 4 차원으로 순간 이동됩니다.
여기서 교훈은 그러한 명령 %windir%
을 피할 수있는 경우 드라이브의 루트 (또는 위험 할 수있는 다른 위치 (예 :))에서 직접 실행 하지 않는 것입니다. 항상 가능한 한 로컬에서 실행하십시오.
답변
얼마 전에 삭제할 파일 확장자를 선택할 수있는 배치 스크립트를 작성했습니다. 스크립트는 해당 확장자를 가진 모든 파일에 대한 폴더와 모든 하위 폴더를 찾아 삭제합니다.
@ECHO OFF
CLS
SET found=0
ECHO Enter the file extension you want to delete...
SET /p ext="> "
IF EXIST *.%ext% ( rem Check if there are any in the current folder :)
DEL *.%ext%
SET found=1
)
FOR /D /R %%G IN ("*") DO ( rem Iterate through all subfolders
IF EXIST %%G CD %%G
IF EXIST *.%ext% (
DEL *.%ext%
SET found=1
)
)
IF %found%==1 (
ECHO.
ECHO Deleted all .%ext% files.
ECHO.
) ELSE (
ECHO.
ECHO There were no .%ext% files.
ECHO Nothing has been deleted.
ECHO.
)
PAUSE
EXIT
이것이 원하는 모든 사람에게 유용하기를 바랍니다. 🙂
답변
이를 사용하여 폴더 및 하위 폴더 내의 모든 파일을 삭제할 수 있습니다.
DEL "C:\Folder\*.*" /S /Q
또는 이것을 사용하여 특정 파일 유형 만 삭제합니다.
DEL "C:\Folder\*.mp4" /S /Q
DEL "C:\Folder\*.dat" /S /Q
답변
댓글을 달 수있는 평판이 부족해서 답변으로 올렸습니다. 그러나이 명령의 원래 문제는 다음과 같습니다.
@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t
첫 번째 For는 재귀 구문이 부족하며 다음과 같아야합니다.
@echo off
FOR /R %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t
다음과 같이 할 수 있습니다.
FOR %%p IN (C:\Users\0300092544\Downloads\Ces_Sce_600) DO @ECHO %%p
실제 출력을 표시합니다.
답변
이거 야:
@echo off
:: del_ext
call :del_ext "*.txt"
call :del_ext "*.png"
call :del_ext "*.jpg"
:: funcion del_ext
@echo off
pause
goto:eof
:del_ext
set del_ext=%1
del /f /q "folder_path\%del_ext%"
goto:eof
pd : folder_path를 폴더로 바꿉니다.
답변
C : 드라이브에서 특정. 확장자를 삭제하려는 경우 다음 cmd를 사용하십시오.
del /s c:\*.blaawbg
암호화 바이러스에 감염된 고객이 있는데 모든 정크 파일을 찾아서 삭제해야했습니다.