윈 도 우 도스 - RD, DEL, Clnup
2021.05.04 15:18
배치파일에서
<질문1>
RD, DEL 사용시 /q 옵션을 주더라도
대상 파일이 없거나, 폴더가 사용중이라 삭제가 불가능하면
"대상이 없습니다" "다른 프로세스가 사용중이기에 엑세스 할 수 없습니다"
등등 에러메시지를 출력하는데요.
이 메시지를 도스창에 안보이게 하려면 어떻게 해야하는지요?
> nul 이걸로도 안되네요.
<질문2>
지금은 사용못하는 deltree 명령과는 달리 RD 명령은 대상 폴더를 유지한 채 그 안의 파일과 하위폴더들만은 삭제를 못하는데요.
그래서 오래전에 어디서 받았던 clnup 이란 도스 유틸리티가 있는데 clnup 으로는 앞서 언급한 문제없이 삭제가 가능한데..
그런데 특정 확장자만 삭제하는 명령은 도무지 알 수가 없는데 호깃 아시는 분 계실지?
<질문3>
배치파일에서 RD, DEL 명령을 대체 수 있는
RD, DEL보다 기능이 많으면서 사용법이 어렵지 않은 유틸리티가 있다면 좀 알려주심 고맙겠습니다.
댓글 [18]
-
BecauseI 2021.05.04 15:39 -
윈도면도 2021.05.04 16:55
본문에도 언급했지만
> nul 로 해도 화면에 다 출력이돼서 질문드린건데요
forfiles에 대해 관련글을 찾아봤는데 너무 장황하고
제가 찾는 류가 아니네요 ㅎ
-
BecauseI 2021.05.04 16:59 > nul 이거 말고 "2> nul" 요
2를 붙이세요
-
윈도면도 2021.05.04 21:29
ㅎ신기하네요.
2 > nul 로 하니 안되던데 2> nul로 하니 되네요
근데 의미없는 숫자같은데 왜 1, 3 을 붙이면 출력이 되고
2를 붙이면 출력이 안될까요?
좀 신기하네요 ㅋ
-
BecauseI 2021.05.04 21:49 0 = 표준 입력
1 = 표준 출력
2 = 표준 에러
에러 출력이라 2를 해줘야 합니다
생략하면 1로 적용.
윈도우는 모르겠는데 리눅스 계열은 표준 에러를 표준 출력등으로 Redirection 도 가능 합니다.
랜덤으로 생성되는 로그 파일을 하나로 합치기 위해서요.
분리되면 모니터링은 좋아도 트러블슈팅이 어렵기 때문이죠
특정 확장자 삭제는
혹시 "del /s *확장자" 이걸말하는 걸까요?
-
윈도면도 2021.05.04 22:33
지금 15분 정도
del z:\123.txt
에 0>nul 1>nul 2>nul을 적용해서 차이점을 명확히 이해하려 시도했는데
2>nul 외엔 잘모르겠네요. 2>nul 만 알아도 대단한 수확입니당
오랫동안 보기싫은 에러 출력 도배를 감수하고 봐왔는데 오늘에서야 종지부를 ㅎ
네. 특정확장자 삭제는 del /s 명령으로 해결되는데
clnup이란 유틸에선 그 기능이 없는가 여쭤본거였습니다.
그런데 rd 명령은 대상 폴더를 유지한 채 그 안의 파일들만 삭제하는 기능은없죠?
에전에 deltree 명령은 간단히 경로 맨끝에 \ 붙여주기만하면 대상폴더는 삭제가 안되고
\를 안붙이면 대상폴더까지 삭제돼서 편리했는데..
왜 이 명령을 윈도에서 없엔건지.. 아쉽네요.
-
BecauseI 2021.05.04 23:59 배치파일등 몇가지 해봤는데 배치 안쓰고
최대한 한줄로 하는건 이것뿐이 모르겠네요
for /d %i in (".\대상폴더\*") do @rd /s /q "%i"
A B C 이런 폴더 순이면
A 폴더에서 cmd 실행 후
대상폴더를 B로 지정하면 됩니다.
그러면 C만 삭제 됩니다.
A B D 도 있으면 D도 삭제 됩니다.
자꾸 습관적으로 rd를 rm으로 누르고 있네요.. 손뗀지가 10년인데
-
윈도면도 2021.05.05 00:37
답변 고맙습니다.
근데 한가지 작업을 하려는게 아니라
여러 경로의 필요없는 폴더나 찌거기들을 경로를 잡아놓고
배치파일을 통해 수시로 일괄삭제하려고 하는 작업이기에
이 방법은 곤란할 거 같습니다 ㅎ
-
BecauseI 2021.05.05 00:41 대상 폴더를 절대경로로 잡아주고 배치로 돌리면 됩니다.
저건 상대경로방식이라...
for /d %%i in ("절대경로\*") do @rd /s /q "%%i"
for /d %%i in ("C:\Windows\SoftwareDistribution\*") do @rd /s /q "%%i" 이런식으로
진작 배치로 돌린다고 하셨으면, 배치로는 진작 테스트 해논게 있었는데..
배치였으면 그냥 다 삭제하고 마지막에 대상 폴더 다시 만드는 식도 있을 텐데요
근데 확인하면서 이것저것 많이 배워서 상관없네요
-
윈도면도 2021.05.05 01:08
말씀대로 했더니 대상폴더는 유지된 채 삭제는 되는데 하위폴더만 삭제가 됩니다.
Z:\Test\AAA
이런 구조일 때..Test 폴더는 유지된 채 AAA 폴더는 삭제가 되는데
Test 폴더에 있는 파일들은 삭제가 안되네요.
그러니깐 Test 폴더만 유지된 채 그 안의 파일과 하위폴더은 싹 비우고
Test 폴더가 빈 폴더가 되는 작업이거든요.
그리고 한가지만 더 여쭙자면..
del Z:\Test\CC.TXT
이 명령을 수행할 때
CC.TXT파일이 없어 에러가 났을땐 알려주신 2> NUL 로 메시지 출력을 막는 건 알겠는데
CC.TXT파일이 존재해 명령이 성공적으로 수행했을 땐 메시지를 출력하고 에러 상황에서만 메시지를 출력 안하는 방법은 혹시 없을까요?
-
BecauseI 2021.05.05 01:16 파일은 이렇게 한줄 추가 하면 될것 같은데요
for /d %%i in ("절대경로") do @del /q "%%i"
for /d %%i in ("절대경로") do @del /q "%%i" 2>nul & echo "%%i" 삭제" 이렇게 하면 메세지 보일것 같은데요
근데 실패 파일이 있을지 모르겠네요
아니면 아래 두줄 추가해서 결과보는것도 있고요
for /d %%i in ("절대경로") do @del /q "%%i" 2>nul & echo "%%i" 삭제 1>c:\log.txt
배치 마지막에 type c:\log.txt 추가
-
윈도면도 2021.05.05 02:27
아고, 너무 오랜 시간을 뺏는거 같아 일단 죄송합니다.
해결은 되질 않았습니다.
1. Z:\Test\*.*
2. Z:\Test\AA\*.*
3. Z:\Test\BB\*.*
이런 구조일때 말씀하신 명령을 수행하면 1번만 성공이고
2번은 폴더만 남고 3번은 폴더와 파일이 그대로 남네요.
clnup 유틸을 쓰면 짧은 명령으로 Test 폴더를 유지한 채
1,2,3 깔끔히 한방에 해결되긴하는데
혹시 내부명령어로도 가능할까,
또 명령이 이해된다면 다른데에도 응용할 수 있을 거 같아 계속 여쭤본건데
제가 For 구문은 전혀 이해를 못하고 있는 상황에서
한가지 단순 작업을 하려는게 아니라 여러 많은 복잡한 폴더에 적용해야하기에
그래서 요건 여기서 포기해야겠습니다.. ㅎ
기존에 쓰던 배치는 에러 문구가 보기 싫어 IF not Exist를 꼭꼭 붙이느라
상당히 장황하고 경로줄이 복잡했는데 2> NUL 때문에 상당히 간소해지고 결과도 깔끔해졌네요
암튼 여러 답변을 자세히 주셔셔 너무 감사드립니다.
-
BecauseI 2021.05.05 10:35 테스트 끝나기 전까진 >nul, 2>nul 이런거 빼고 해보세요
에러 메세지를봐야지 어디서 인터럽트가 생기는지 알수 있으니까요.
메세지를 보면 답이 나옵니다.
그런데
for /d %%i in ("절대경로\*") do @rd /s /q "%%i" 이걸 하면
1. Z:\Test\*.*
2. Z:\Test\AA\*.*
3. Z:\Test\BB\*.*
AA 랑 BB 가 안지워진다고요?
-
윈도면도 2021.05.05 16:03
말씀듣고다시해보니말씀대로 2, 3번은 지워지네요 (어젠 2번 폴더가 그대로 남았는데)
1번은 안 지워지고요.
어제 많은 테스트를 장시간 하다보니 제가 뭔가 체크하지 못한게 있었나 봅니다.
-
BecauseI 2021.05.05 17:27 해결 하셨다니 다행이군요
어제 확인 못하고 적은 부분이 있는데 오늘 보니 동작을 안해 정정 합니다.
파일 삭제 후 로그 남기는 부분입니다.
for %%i in ("절대경로\*") do @del /q "%%i" & echo "%%i" 삭제
for %%i in ("절대경로\*") do @del /q "%%i" & echo "%%i" 삭제 > c:\log.txt
이건 삭제 로그가 c:\log.txt 저장 됩니다.
삭제 실패한 파일 오류 메시지 제거는
for %i in ("절대경로\*") do @del /q "%i" 1>nul 2>nul 이렇게 하면 되는데
여기다 삭제 성공 메시지 추가는 이 방식으로는 불가능 하네요
이런식도 된다고 쓰는겁니다. 다른 방법들도 얼마든지 있습니다.
del 명령어 치다 안 사실이 있는데 /s 하위 폴더 포함 옵션을 쓰게 되면 파일 삭제 메시지가 기본으로 보이네요
-
윈도면도 2021.05.05 23:38
그렇군요. 잘 활용하겠습니다
여러 답변으로 상당부분 알게된 사실이 많네요 (수시로 활용하는게 아니기에 시간지나면 또 까맣게 잊어버려 헤맬듯 하지만 ㅠㅠ)
-
밀물 2021.05.05 13:56
@echo off
for /d %%a in (z:\test\*) do rd /s /q %%a
del z:\test /q /f -
윈도면도 2021.05.05 16:04
한 줄로 구현해야해서요.
암튼 이 문제는 다른 방법으로 해결이 됐습니다. 댓글 고맙습니다.
번호 | 제목 | 글쓴이 | 조회 | 등록일 |
---|---|---|---|---|
[공지] | 질문과 답변 게시판 이용간 유의사항 | gooddew | - | - |
89908 | 윈 도 우| 윈도우11 설치를 위한 사전 준비 [5] | 클리엔테스 | 821 | 07-01 |
89907 | 윈 도 우| Win10) C:\WINDOWS\system32\abc [7] | 팡팡빌리지 | 2974 | 07-01 |
89906 | 윈 도 우| 윈도우 11 입니다. 이게 뭘까요? [4] | 오토터보 | 1279 | 07-01 |
89905 | 윈 도 우| 볼륨웨어 16 버전에서 윈도우11 설치하는방법좀알려주세요..^^ [6] | 알파궁상 | 330 | 07-01 |
89904 | 윈 도 우| 윈도11 iso로 깐 후, 참가자 프로그램에 가입하려하니 무한... | 수림초롱 | 440 | 07-01 |
89903 | 하드웨어| 모니터 이거 어떤가요? [3] | 프리티맨 | 390 | 07-01 |
89902 | 소프트웨어| 오피스 아웃룩 질문 있습니다. [1] | kuky1006 | 200 | 06-30 |
89901 | 윈 도 우| 윈도우11에서 부팅하고 초기에 PIN 물어보는 화면 건너뛰려... [9] | 복두꺼비 | 815 | 06-30 |
89900 | 윈 도 우| 컴퓨터에서 휴대폰 화면 미러링 [5] | 한스 | 624 | 06-30 |
89899 | 윈 도 우| 윈도우 부팅이 안됩니다. [3] | 버금차. | 425 | 06-30 |
89898 | 윈 도 우| 윈도우 11에서 인터넷 익스플로러 사용할수있도록 알려주세요. [8] | 뜻정 | 861 | 06-30 |
89897 | 윈 도 우| 윈도우11 바탕화면 아이콘 레이블 관련 질문입니다 | 오두막과시 | 168 | 06-30 |
89896 | 윈 도 우| 윈도우11 우하단에 있던 바탕화면이랑 작업관리자 우클릭해... [2] | 도전정신 | 417 | 06-30 |
89895 | 윈 도 우| 윈도11 개발자버전 유효기간이 얼마일까요? [2] | 숲에이드 | 478 | 06-30 |
89894 | 윈 도 우| Windows 11 작업표시줄 "IME를 사용하지 않습니다&quo... [4] | khhenix | 3633 | 06-30 |
89893 | 윈 도 우| win11 ie11 사용 가능한가요?? [7] | 백암리 | 605 | 06-30 |
89892 | 윈 도 우| 윈도우11 작업표시줄 질문드립니다. [3] | 이제부터아 | 689 | 06-30 |
89891 | 윈 도 우| 윈11에서 작업 표시줄 [8] | 4k8k | 956 | 06-30 |
89890 | 윈 도 우| win11에서... [4] | 한세상 | 624 | 06-30 |
89889 | 윈 도 우| 백신에서 "주소가 차단되었습니다" 라고 계속 뜹... [5] | 팡팡빌리지 | 439 | 06-30 |
질문 1
2> nul
질문 2
forfiles 를 응용해보면 될 것 같기도 합니다.