[파워쉘]특정날짜 지난 폴더(하위폴더 포함) 삭제

in powershell •  7 years ago  (edited)

현재날짜보다 3일이전 날짜를 변수로 저장

$deleteday = (get-date).adddays(-3).tostring("yyyyMMdd")

정리할 폴더 위치를 변수 저장

$deletedir = "C:\templog"

현재 날짜를 기준으로 지정된 날짜 전에 폴더를 삭제

get-childitem -path $deletedir| where-object {$_.name -le $deleteday} | remove-item -recurse -force

단, 파일명이 길경우는 위와 같이 진행시 오류가 발생합니다 ㅜ_ㅜ

$del_dir = get-childitem -path $deletedir| where-object {$_.name -le $deleteday}

$i=0

for($i=0;$i -lt $del_dir.count;$i++){

if($del_dir.count -eq 1) { 



new-item -path $deletedir -itemtype directory -name temp_dir



robocopy $deletedir\temp_dir $deletedir"\"$del_dir /s /mir



rmdir $deletedir\temp_dir



rmdir $deletedir"\"$del_dir



}



else {



$del_dir2 = $del_dir.get($i)



new-item -path $deletedir -itemtype directory -name temp_dir



robocopy $deletedir\temp_dir $deletedir"\"$del_dir2 /s /mir



rmdir $deletedir\temp_dir



rmdir $deletedir"\"$del_dir2



}

}

위 내용을 delete_folder.ps1파일로 저장

스크립트 실행 권한을 줘야하기 때문에 아래와 같이 vbs로 실행하게끔 delete_folder.vbs 파일 생성

ps="powershell.exe -nologo -command " & Chr(34) & "delete_folder.ps1" & Chr(34)

set shell=createobject("WScript.Shell")

shell.Run ps,0,true

작업스케줄에 원하시는 시간대에 실행되게끔 설정하면 끝.

schtasks.exe /create /sc daily /tn test /tr c:\delete_folder.vbs /st 12:00

해석 : 메일 오후12에 계산시실행. 작업명은 test

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!