2016-10-25 2 views
0

배치 파일을 사용하여 스케줄에 따라 정리할 디스크 공간이 많은 임시 파일이 있습니다.배치 파일을 사용하여 크고 오래된 파일은 어떻게 삭제합니까?

처리하려는 파일 이름은 항상 "harp_"로 시작하지만 가장 최근의 두 파일을 유지하려고합니다.

  • harp_0tnqy2o078824m1ax 25/10/2016
  • harp_0e3qmw11gz6z9j10s 24/10/2016
  • harp_0tnqy2o078824m1ax 23/10/2016
  • harp_11ik03u00g4k2y19y 10 월 22 일 : 폴더에 같은 파일이 포함되어 있습니다 예를 들어

    /2016

  • 테스트 1 25/10/2016
  • 테스트 2 10/10/2016

나는 폴더가 지금 포함시킬 :

  • harp_0tnqy2o078824m1ax 25/10/2016
  • harp_0e3qmw11gz6z9j10s 24/10/2016
  • 테스트 1 25/10/2016
  • 테스트 2 10/10/2016

누구든지이 배치 파일을 스크립팅 할 수 있습니까?

+1

스택 오버플로에 오신 것을 환영합니다. 2 분간 [투어]를 가져 가십시오. 또한 [Help]를 열고 적어도 [ask]를 읽으십시오. 그런 다음 질문을 편집하고 [mcve]를 제공하십시오. 그러나 현재 작성된 귀하의 질문에 대한 응답 : 나는 제공된 텍스트 문자열 [유효한 파일 이름이 아닙니다] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247 v = vs.85) .aspx # naming_conventions). – JosefZ

답변

2

FOR /F 명령을 사용하여 DIR 명령의 출력을 구문 분석 할 수 있습니다. 열쇠는 SKIP 옵션을 사용하여 두 개의 최신 파일을 유지합니다.

FOR /F "skip=2 delims=" %%G IN ('DIR /A-D /B /O-D harp_*') DO del "%%~G" 
1

배치 오션 배쉬가 필요한 경우에는 상당히 만족스럽지 않습니다. 배치의 경우 내 대답은 스쿼시 맨이 swecurity의 측면을 추가하는 것과 같으며, 삭제 될 파일은 실행 전에 수정 될 수있는 tmp 파일에 추가됩니다.

@Echo off&Setlocal 
Set Basefldr=C:\where\ever 
PushD "%Basefldr%" ||(Echo Couldn't cd to %Basefldr% &Pause&Exit /B 1) 
Set DelList="%tmp%\DelList.cmd" 
Type NUL>%DelList% 
For /f "skip=2 delims=" %%A in ('Dir /B/A-D/O-D "harp_*"' 
) Do >>%DelList% Echo:Del %%~fA 
:: Review the file DelList.cmd before executing it 
Notepad.exe %DelList% 
:: or 
:: more %DelList% 
popd 
+0

질문에 배치 파일이 태그되었습니다. 왜 사용자는 bash 스크립트가 필요하다고 생각합니까? – Squashman

+0

사용자는 ** 하프 _ **로 시작하는 파일 만 삭제하려고합니다. – Squashman

+0

기술적으로 bash는 일괄 처리입니다. 나는 fokus가 마지막 2에 있고 정확하게 읽지 않았다고 생각했다. BTW 그려진 다시 배쉬 대답했다. – LotPings

관련 문제