윈 도 우 특정파일을 제외하고 폴더와 파일 모두 삭제하고 싶습니다...
2019.11.07 13:51
안녕하세요 ?
D드라이브에 존재하는 특정 bat파일들만 제외하고 D드라이브에 있는 폴더와 파일을 모두 삭제할 수 있는 배치파일을 만들고 싶은데요
for %%i in (*.*) do if not "%%i"=="*.bat" del "%%i
이명령어를 D드라이브에 두고 사용하면 D드라이브 내에 있는 파일들은 모두 삭제가 가능한데
폴더는 삭제가 안되네요 ㅜㅠ
rmdir 등등 여러가지 짱구를 굴려서 D드라이브내에 있는 모든파일은 삭제했는데
특정 bat파일까지 모두 삭제가 되버리더라구요
혹시 방법이 있을까요 ?
댓글 [7]
-
내꼬 2019.11.07 17:05 -
노루야내뒤에숨어 2019.11.07 19:12
폴더 겉에 있는 bat파일만 남기고 모든폴더 파일 삭제였는데 아래 suk님께서 해결해주셨습니다 감사합니다^^ -
suk 2019.11.07 18:29
뭔가 시험 문제 같은 느낌인데요;;
bat 파일을 제외하고 파일부터 삭제한 후에 폴더 내부에 bat 파일 유무로 폴더를 삭제하도록 하니까 비교적 쉽게 되었습니다
테스트한 bat 파일은 위험성이 있어서 공개하지 않고, bat 파일 내용만 올립니다. H:을 D:으로 2군데 수정하시면 됩니다
데이터용 드라이브는 위험하기 때문에 없어도 되는 XP 윈도를 대상으로 삭제 테스트했습니다. XP 백업부터하고 반복 테스트했습니다
@prompt $s
@color 1f
@cd /d %~dp0
@title bat 파일만 제외하고 모든파일과 폴더 삭제하기
@mode con cols=200 lines=1000
@setlocal enabledelayedexpansion@echo 관리자권한 확인용 >%windir%\admin.confirm || @(
echo Set UAC = CreateObject^("Shell.Application"^) > "%tmp%\admin.vbs"
echo UAC.ShellExecute "%~0", "", "", "runas", 1 >> "%tmp%\admin.vbs"
"%tmp%\admin.vbs" & del "%tmp%\admin.vbs" & exit)
@del %windir%\admin.confirm@echo.
@echo.
@echo.=========================================================================
@echo. 삭제 테스트용입니다
@echo.=========================================================================
@echo.
@pausefor /f "tokens=*" %%a in ('dir /a-d /b /s H:\ 2^>nul') do @if /i not "%%~xa"==".bat" del /f/a/q "%%a"
for /f "tokens=*" %%a in ('dir /ad /b /s H:\ 2^>nul') do (
@set /a k=0
for /f "tokens=*" %%b in ('dir /a-d /b /s "%%a\*.bat" 2^>nul') do @(
set /a k+=1
)
if !k!==0 rd /q/s "%%a"
@echo.
@echo.================================================================================================================================
@echo. "%%a" 폴더 안에 포함된 총 bat 파일 갯수는 !k!개 입니다
@echo.================================================================================================================================
)@echo.
@echo.
@echo.====================================
@echo. 모든 작업을 완료했습니다
@echo.====================================
@echo.
@pause
@exitㄴ 참고로, 지정된 경로를 찾을 수 없다는 것은 이미 상위 폴더가 검색되어서 삭제되어 버려서 그렇습니다
삭제되어 버린 후에도 처음 검색된대로 bat 파일은 진행하기 때문에 이런 현상이 발생합니다. bat 파일에서는 흔한 일로 오류는 아닙니다.
XP의 Windows 폴더 안에도 원래 bat 파일이 숨어 있더군요. 이번 기회에 발견한 새로운 사실이네요.
이건 테스트용으로 넣은 빈 bat 파일입니다
- bat파일만제외하고모든파일과폴더삭제하기.bat 테스트 - bat 파일은 위험해서 비공개 테스트 2019-11-07_181552.jpg (354.4KB)(2)
- bat파일만제외하고모든파일과폴더삭제하기.bat 테스트 - bat 파일은 위험해서 비공개 테스트 2019-11-07_181621.jpg (31.5KB)(0)
- bat파일만제외하고모든파일과폴더삭제하기.bat 테스트 - bat 파일은 위험해서 비공개 테스트 2019-11-07_181727.jpg (17.2KB)(0)
- bat파일만제외하고모든파일과폴더삭제하기.bat 테스트 - bat 파일은 위험해서 비공개 테스트 2019-11-07_181755.jpg (15.5KB)(0)
-
노루야내뒤에숨어 2019.11.07 19:13
허걱......코드가 굉장히 기네요 정상작동합니다 감사합니다^^
지난번에도 suk님께 도움받았었는데 정말감사드려요 ㅠㅠㅠ
혹시 배치파일 공부하려면 어떤게 도움될지 여쭤도 괜찮을까요?
정말감사드립니다 -
suk 2019.11.07 19:22
저는 따로 bat 파일 공부한 적이 없습니다
스누피님 블로그에 올라왔던 cmd 파일 열어서 독학?하고, 그 외 간간히 bat 파일 열어서 조금씩 배우는 것이 전부입니다.
이런 방식이라도 특별히 배치파일을 배우려고 하지 않기 때문에 발전은 별로 없습니다
-
노루야내뒤에숨어 2019.11.07 19:37
아하 그렇군요.... 좋은답변 감사합니다 잘쓰겠습니다^^ -
노루야내뒤에숨어 2023.11.20 17:32
안녕하세요 suk님 오랜만에 인사드립니다...
만들어주신 배치파일 잘사용하고 있는데요~
염치불구하고 하나만 더 부탁드려도 될까요?
위 소스에서 "UTIL"이라는 특정폴더제외하고 삭제하는 소스를 추가하고 싶습니다 ㅠㅠ
for /f "tokens=*" %%a in ('dir /a-d /b /s H:\ 2^>nul') do @if /i not "%%~xa"=="UTIL" ".bat" del /f/a/q "%%a"
for /f "tokens=*" %%a in ('dir /ad /b /s H:\ 2^>nul') do (
@set /a k=0
for /f "tokens=*" %%b in ('dir /a-d /b /s "%%a\UTIL" "%%a\*.bat" 2^>nul') do @(
set /a k+=1
)
if !k!==0 rd /q/s "%%a"
이렇게 추가해봤는데 인식을 제대로 못하고 있네요 ㅠㅠ
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
» | 윈 도 우| 특정파일을 제외하고 폴더와 파일 모두 삭제하고 싶습니다... [7] | 노루야내뒤 | 538 | 11-07 |
81530 | 윈 도 우| 윈도우탐색기에서 메모장 미리보기 | 카니발 | 398 | 11-07 |
81529 | 소프트웨어| 스테레오 툴 | cr | 383 | 11-07 |
81528 | 윈 도 우| 맥os vmdk 파일이랑 맥 iso dmg파일차이점에 대해서 질문드... [4] | 복태취업했 | 535 | 11-07 |
81527 | 윈 도 우| Windows 이미지 백업시 H/W관련 정보 삭제가 가능한가요? [3] | bloodra | 285 | 11-07 |
81526 | 기 타| 라데온rx570 전원및절전 몇분후에 끄기하면 [3] | 청담인 | 434 | 11-07 |
81525 | 소프트웨어| grub2 csm -> efi chainloader할 방법 없을까요? | DarknessAn | 227 | 11-06 |
81524 | 기 타| 이파일의 제목과 가수가 누군지 아시나요? [2] | 카니발 | 697 | 11-06 |
81523 | 소프트웨어| Adobe Photoshop 2020 누끼 따기가 좋아졌다는데.. [2] | Day | 1513 | 11-06 |
81522 | 소프트웨어| 혹시 유니티를 하시는 분 계신가요? [3] | 한스 | 340 | 11-06 |
81521 | 윈 도 우| 윈도우10 Enterprise LTSC 관련 질문입니다. [4] | 오호라7 | 1166 | 11-06 |
81520 | 윈 도 우| 파티션 복구 방법 문의 드립니다 ㅠ.ㅠ [4] | 한아름 | 520 | 11-06 |
81519 | 하드웨어| PC 안켜집니다 [6] | 매일이새롭 | 620 | 11-06 |
81518 | 하드웨어| 노트북에서 어도비 프로그램 사용시 그래픽카드 경고문제 [16] | 명랑중년 | 721 | 11-06 |
81517 | 윈 도 우| 윈도우7 드라이브 문의 [2] | 루돌프가슴커 | 217 | 11-06 |
81516 | 하드웨어| 포맷된 하드디스크 데이터 복구 ㅜㅜ [10] | thelovers | 913 | 11-06 |
81515 | 소프트웨어| 불량하드 데이터 옮기기... [2] | 현민지 | 564 | 11-06 |
81514 | 윈 도 우| HP 컴퓨터 윈도우7 정품인증 문의 드립니다. [14] | 스코어 | 1259 | 11-06 |
81513 | 소프트웨어| 고스트 백업시 오류 뜹니다ㅠㅠㅠㅠ [21] | 보노보노아 | 1125 | 11-05 |
81512 | 하드웨어| 메인보드 어떤것을 구매해야 하나요? [11] | 라랑 | 546 | 11-05 |
단순 for %%i in (*.*) do if not "%%i"=="*.bat" del "%%i 하나로 가능하다면 좋겠습니다
파일은 최소 단위 입니다.
파일은 그나마 bat가 아니면 삭제 가능하지만
폴더는 그렇지 않습니다.
폴더속에는 수 많은 폴더가 있습니다 또 폴더속에도 폴더가 있으며 그 폴더 속에도 또 폴더가 있습니다
가령)
a>b>c>d>e>f 5계층으로 이루어져 있는 폴더가 있다면
1. 한 폴더에는 몇개의 폴더가 존재 하는지 구해야 할것입니다.
2. 폴더속에 bat 아닌것만 삭제 조건
3. 폴더속에 파일이 없다면 삭제(단 폴더속 폴더가 있는경우 별도 조건)
f폴더에 아무것도 없다면 f폴더는 삭제 가능
d폴더를 지우기 위해 e폴더, f폴더 부터 해결해야 d폴더를 지울수 있는 조건이 나올겁니다
rmdir은 조건을 따지지 않으므로 다른 많은 스크립트 명령을 동원해야 가능할것입니다.