기 타 하위폴더 특정파일 삭제방법 부탁드려봅니다.
2015.07.22 11:53
많은 하위폴더에 특정파일만 삭제할수 있는 배치파일 구할수 없을까요.
부탁드립니다.
댓글 [8]
-
메리아 2015.07.22 13:01
-
사차원 2015.07.22 13:10
삭제됐다는 메세지는 나오는데,실제 삭제는 되지 않네요.^^:;
-
메리아 2015.07.22 13:57
그래요?
일단은 테스트 해보고 올린건데...
출력되는 부분에서
안 지워지던 파일 스샷 찍거나 긁어서 한번 올려보세요.
검색어도 같이요.
설마 전부 안지워지나요?
잘못 삭제되는 버그는 예상했지만,
실제 삭제가 안되는 버그는 원인이 짐작 안가는군요.
지워지지 않았다는건,
경로명과 파일명이 잘못 처리되었을때의 문제일 수도 있지만,
그게 정말 잘못됐으면 저 단계까지 가지도 않을텐데요... ㅡ.ㅡ
뭔가 삭제를 막는 다른 부분이 있는거 아닌가 싶은데,
처리가 잘못됐을 수도 있으니 안된 파일의 경로와 파일명을 봐야 테스트가 가능하겠네요.
-
사차원 2015.07.22 14:13
파일 첨부합니다.
하위 폴더 5개에 각각 A백업폴더로 이동.bat파일이 들어 있습니다.
ㅁ 사용용도
여러 다른이름 수백개 폴더에 특정파일이 들어가 있는데,이걸 일일이 삭제하여야함
-
메리아 2015.07.22 14:31
첨부파일의 문제는 해결했습니다.
위의 댓글에 수정했으니 참고바랍니다.
(검색어에서 따옴표만 제거하면 됩니다.)
그리고 첨부파일의 문제에서는 똑같은 문제가 재현되지 않습니다.
분명 앞의 문의에서 "삭제중"이라는 문구가 떴다고 하셨는데,
첨부파일은 모두 "통과" 문구가 뜨네요.
이는 중요한 차이로서
"삭제중" 문구가 떴다는건 제가 처리하는 부분에서 생긴 문제가 아닐 가능성이 높습니다.
(첨부파일의 케이스에서는 제가 처리를 잘못한게 맞긴 하지만요)
하지만 여전히 제가 처리한 부분에서 문제가 있을 수 있기에,
확인을 위해 해당 샘플이 필요합니다.
"삭제중..."이라는 문구가 떴는데도 삭제가 안된 샘플을 찾아주시면 감사하겠습니다.
그리고 검색할 파일명이 여러가지인 문제는
수정을 좀 해야겠네요.
가능한거긴 합니다만, list파일을 따로 만들어야돼요. ㅠㅠ
-
사차원 2015.07.22 14:38
감사합니다.^^
확인해볼께요.
-
메리아 2015.07.22 15:16
아래 여러파일을 검색하는 버전도 올렸으니,
확인해보세요.
-
메리아 2015.07.22 14:58
멀티 파일 수정버전입니다.
--------------------------------------------------------------------------------------------------------
del_list.txt 파일을 만들고,
삭제하고자 하는 파일명이나, 검색문구를
한줄에 하나씩 입력함.
빈줄은 관계 없으나,
절대 따옴표는 넣지 말것.
--------------------------------------------------------------------------------------------------------
@echo off
pushd %~dp0
SETLOCAL ENABLEDELAYEDEXPANSION
echo.
echo.
:: 삭제 리스트 파일명은 바꿔서 만들어도 됨.
set del_listName=del_list.txt
dir /o/b/s/a-d > tmplistfile.txt
for /f "delims=" %%i in (tmplistfile.txt) do (
echo %%i 확인중
set dstdel=%%i
for %%j in ("!dstdel!") do (
set Name=%%~nxj
)
set matched=false
for /f "delims=" %%k in ('type "%del_listName%"') do (
set find_str=%%k
echo.!Name!|findstr /i /C:"!find_str!" >nul 2>&1
if not errorlevel 1 (
set matched=true
)
)
if !matched! == true (
echo └ 삭제중...
del "!dstdel!"
echo └ 삭제완료.
) else (
echo └ 통과
)
)
del tmplistfile.txt
echo.
echo.
echo 전제 삭제완료.
echo.
echo.
pause > nul
goto :EOF
마침 유사한 작업을 하던게 있어 고쳐 올립니다.
하위경로의 파일명과 확장자에 "aa"란 글자가 들어가는걸 모두 삭제하는 예제입니다.
(폴더명은 관계없음. 사실 자칫 잘못하면 경로명까지 포함되는 버그가 생기지만, 해당버그가 생기지 않도록 처리함.)
버그가 있을수 있으므로 테스트부터 해보시고,
원본은 백업 후에 주의해서 쓰시기 바랍니다.
-------------------------------------------------------------------------------
@echo off
pushd %~dp0
SETLOCAL ENABLEDELAYEDEXPANSION
echo.
echo.
:: 검색어에는 띄어쓰기가 있더라도 따옴표 붙이지 말것.
:: 또한 등호(=) 앞뒤에 띄어쓰기 함부로 하지 말것. 띄어쓰기까지 같이 인식할 수 있음.
set find_str="aa"-> set find_str=aa:: ex) set find_str="가나다" (△, 되긴됨)
:: ex) set find_str=가나다 (O)
:: ex) set find_str = 가나다 (X)
:: ex) set find_str="가나다 라마바" (X)
:: ex) set find_str=가나다 라마바 (O)
dir /o/b/s/a-d > tmplistfile.txt
for /f "delims=" %%i in (tmplistfile.txt) do (
echo %%i 확인중
set dstdel=%%i
for %%j in ("!dstdel!") do (
set Name=%%~nxj
)
echo.!Name!|findstr /i /C:"%find_str%" >nul 2>&1
if not errorlevel 1 (
echo └ 삭제중...
del "!dstdel!"
echo └ 삭제완료.
) else (
echo └ 통과
)
)
del tmplistfile.txt
echo.
echo.
echo 전제 삭제완료.
echo.
echo.
pause > nul
goto :EOF