현재날짜보다 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