파워쉘이 더 알고 싶으면?
http://www.pavleck.net/powershell-cookbook/index.html
아래는 스크립트 전문이다.
### ps
#
# 1. C:\360\Input History 폴더에서 모든 전날 날짜(20130219)의 파일을 카피하여
# C:\360\InputHistory_hist\20130219 밑에 폴더 형상까지 카피
# 2. C:\360\Output 폴더에서 모든 전날 날짜(20130219)의 파일을 카피하여
# C:\360\Output_hist\20130219 밑에 폴더 형상까지 카피
# 3. 가능하면 날짜 폴더를 압축(이건 나중에 ㅋㅋ)
# 4. 기존 데이터 삭제
#
#
# 파워쉘을 실행시키기 위해서는 Get-ExecutionPolicy의 결과가 Restricted이면 안된다.
# PS>Set-ExecutionPolicy RemoteSigned
#
# 로그파일 보관 기간 = 30일
$NDays = 30
# 어제 날짜 구하기
$yesterday = (Get-Date).AddDays(-1).ToString("yyyy_MM_dd")
#개발 시 확인용 $yesterday
#####################################################################################
#
# Input History Log 작업 시작
#
#####################################################################################
$sourceFolder = 'C:\360\Input History\'
$targetFolder = 'C:\360\InputHistory_hist\' + $yesterday
#개발 시 확인용 $targetFolder
##########################################################
#
# Input History Log 작업
#
# 이 스크립트에 대한 로그파일 작성
#
#로그 삭제 작업 시작 시간 작성
$thisLog = $targetFolder + '\..\deletedFiles_' + $yesterday + '.txt'
#해당 폴더가 없는 경우 파일 생성에 실패한다.
#그러므로 최초 실행시에는 오류가 발생할 것이다.
echo '로그 작업 시작!' | Out-File $thisLog
Get-Date | Out-File $thisLog -Append
##########################################################
#
# Input History Log 작업
#
# 어제 로그를 _hist에 카피하기
#
$filterStr = $yesterday + '*'
#개발 시 확인용 $filterStr
# 어제 로그를 카피한다
Copy-Item $sourceFolder -Destination $targetFolder -Filter $filterStr -Recurse
##########################################################
#
# Input History Log 작업
#
# 어제 로그를 삭제하기
#
#삭제 대상 파일을 log에 작성
echo '' | Out-File $thisLog -Append
echo '어제 로그를 삭제하기' | Out-File $thisLog -Append
$deletedFiles = Get-childItem $sourceFolder -Filter $filterStr -Recurse
#개발 시 확인용 $deletedFiles
#삭제 대상 건수 확인용
#$deletedFiles | foreach-object { $i++ }
#$i
#삭제(삭제할 내용이 있을 때만 실행)
if($deletedFiles -Eq $null) {
echo '[Input History]어제 로그 is null' | Out-File $thisLog -Append
}
else {
echo '[Input History]어제 로그가 있다!' | Out-File $thisLog -Append
#삭제 대상 파일을 log에 작성
$deletedFiles | Out-File $thisLog -Append
$deletedFiles | Remove-Item
}
##########################################################
#
# Input History Log 작업
#
# N일 전 _hist 로그를 삭제하기
# N일 전 날짜 이름의 폴더를 삭제
#
#삭제 대상 파일을 log에 작성
echo '' | Out-File $thisLog -Append
echo 'N일 전 _hist 로그를 삭제하기' | Out-File $thisLog -Append
# -N일 날짜 구하기
$NDaysAgo = (Get-Date).AddDays(-$NDays).ToString("yyyy_MM_dd")
$targetFolder = $targetFolder + '\..\'
$filterStr = $NDaysAgo
$deletedFiles = Get-childItem $targetFolder -Filter $filterStr
#삭제(삭제할 내용이 있을 때만 실행)
if($deletedFiles -Eq $null) {
echo '[Input History]N일 전 날짜 이름의 폴더 is null' | Out-File $thisLog -Append
}
else {
echo '[Input History]N일 전 날짜 이름의 폴더가 있다!' | Out-File $thisLog -Append
$deletedFiles | Out-File $thisLog -Append
#폴더를 질문 안 받고 삭제하려면 -Recurse 옵션을 추가한다.
$deletedFiles | Remove-Item -Recurse
}
##########################################################
#
# Input History Log 작업
#
# N일 전 $thisLog 로그를 삭제하기
#
#삭제 대상 파일을 log에 작성
echo '' | Out-File $thisLog -Append
echo 'N일 전 $thisLog 로그를 삭제하기' | Out-File $thisLog -Append
$filterStr = 'deletedFiles_' + $NDaysAgo + '*'
$deletedFiles = Get-childItem $targetFolder -Filter $filterStr
#삭제(삭제할 내용이 있을 때만 실행)
if($deletedFiles -Eq $null) {
echo '[Input History]N일 전 $thisLog 로그 is null' | Out-File $thisLog -Append
}
else {
echo '[Input History]N일 전 $thisLog 로그가 있다!' | Out-File $thisLog -Append
$deletedFiles | Out-File $thisLog -Append
$deletedFiles | Remove-Item
}
#####################################################################################
#
# Output Log 작업 시작
#
#####################################################################################
$sourceFolder = 'C:\360\Output\'
$targetFolder = 'C:\360\Output_hist\' + $yesterday
#개발 시 확인용
$targetFolder
##########################################################
#
# Output Log 작업
#
# 이 스크립트에 대한 로그파일 작성
#
#로그 삭제 작업 시작 시간 작성
$thisLog = $targetFolder + '\..\deletedFiles_' + $yesterday + '.txt'
#해당 폴더가 없는 경우 파일 생성에 실패한다.
#그러므로 최초 실행시에는 오류가 발생할 것이다.
echo '로그 작업 시작!' | Out-File $thisLog
Get-Date | Out-File $thisLog -Append
##########################################################
#
# Output Log 작업
#
# 어제 로그를 _hist에 카피하기
#
$filterStr = $yesterday + '*'
#개발 시 확인용 $filterStr
# 어제 로그를 카피한다
Copy-Item $sourceFolder -Destination $targetFolder -Filter $filterStr -Recurse
##########################################################
#
# Output Log 작업
#
# 어제 로그를 삭제하기
#
#삭제 대상 파일을 log에 작성
echo '' | Out-File $thisLog -Append
echo '어제 로그를 삭제하기' | Out-File $thisLog -Append
$deletedFiles = Get-childItem $sourceFolder -Filter $filterStr -Recurse
#개발 시 확인용 $deletedFiles
#삭제 대상 건수 확인용
#$deletedFiles | foreach-object { $i++ }
#$i
#삭제(삭제할 내용이 있을 때만 실행)
if($deletedFiles -Eq $null) {
echo '[Output]어제 로그 is null' | Out-File $thisLog -Append
}
else {
echo '[Output]어제 로그가 있다!' | Out-File $thisLog -Append
#삭제 대상 파일을 log에 작성
$deletedFiles | Out-File $thisLog -Append
$deletedFiles | Remove-Item
}
##########################################################
#
# Output Log 작업
#
# N일 전 _hist 로그를 삭제하기
# N일 전 날짜 이름의 폴더를 삭제
#
#삭제 대상 파일을 log에 작성
echo '' | Out-File $thisLog -Append
echo 'N일 전 _hist 로그를 삭제하기' | Out-File $thisLog -Append
# -N일 날짜 구하기
$NDaysAgo = (Get-Date).AddDays(-$NDays).ToString("yyyy_MM_dd")
$targetFolder = $targetFolder + '\..\'
$filterStr = $NDaysAgo
$deletedFiles = Get-childItem $targetFolder -Filter $filterStr
#삭제(삭제할 내용이 있을 때만 실행)
if($deletedFiles -Eq $null) {
echo '[Output]N일 전 날짜 이름의 폴더 is null' | Out-File $thisLog -Append
}
else {
echo '[Output]N일 전 날짜 이름의 폴더가 있다!' | Out-File $thisLog -Append
$deletedFiles | Out-File $thisLog -Append
#폴더를 질문 안 받고 삭제하려면 -Recurse 옵션을 추가한다.
$deletedFiles | Remove-Item -Recurse
}
##########################################################
#
# Output Log 작업
#
# N일 전 $thisLog 로그를 삭제하기
#
#삭제 대상 파일을 log에 작성
echo '' | Out-File $thisLog -Append
echo 'N일 전 $thisLog 로그를 삭제하기' | Out-File $thisLog -Append
$filterStr = 'deletedFiles_' + $NDaysAgo + '*'
$deletedFiles = Get-childItem $targetFolder -Filter $filterStr
#삭제(삭제할 내용이 있을 때만 실행)
if($deletedFiles -Eq $null) {
echo '[Output]N일 전 $thisLog 로그 is null' | Out-File $thisLog -Append
}
else {
echo '[Output]N일 전 $thisLog 로그가 있다!' | Out-File $thisLog -Append
$deletedFiles | Out-File $thisLog -Append
$deletedFiles | Remove-Item
}
#로그 삭제 작업 종료 시간 작성
echo '' | Out-File $thisLog -Append
echo '로그 작업 끝!' | Out-File $thisLog -Append
Get-Date | Out-File $thisLog -Append