
현재 변경 사항을 작성할 때마다 스위치/라우터 구성을 자동으로 백업합니다. 이는 FTP를 통해 텍스트 파일을 폴더로 보내는 방식으로 수행됩니다.
디렉터리에서 15일이 지난 모든 파일을 삭제하는 스크립트를 작성하려고 합니다. 하지만 15일이 지났더라도 각 장치의 최신 파일을 유지하고 싶습니다.
파일 이름 지정 형식은 다음과 같습니다. 최신 변경 사항으로 덮어쓰면 최신 파일 이름은 Hostname-Config-Change.txt입니다. Hostname-Config-Change_MM-DD-YY_HH-MM-SS_Time.txt로 이름이 변경됩니다.
이를 수행하는 가장 쉬운 방법은 이름에 날짜와 시간이 포함된 15일이 지난 모든 파일을 삭제하는 것입니다. 나는 이 문제에 어떻게 접근해야 할지 전혀 모르고, 둘 중 하나를 수행하는 방법을 찾았지만 둘 다 수행하는 방법을 찾지 못했습니다.
귀하가 제공할 수 있는 도움에 미리 감사드립니다.
이것은 지금까지 내 코드입니다. 나는 이제 powershell을 사용하고 있으므로 어떤 조언이라도 감사하겠습니다.
#Set Variables
# Get current date/time then subtract days to keep files.
$limit = (Get-Date).AddDays(-15)
#Set path of Files to be scanned & deleted
$path = "Directory to Files"
# Delete files older than the $limit.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force
#End of Script
답변1
따라할 수 있는 모든 사람이 쉽게 사용할 수 있도록 하기 위한 것입니다. 위의 응답을 사용하여 정규식을 사용하여 파일 이름에 X일보다 오래된 날짜가 있는 파일을 보는 방법을 알아낼 수 있었습니다. 최신 파일에는 파일 이름에 날짜가 포함되어 있지 않으므로 나에게 효과적이었습니다. 날짜 구문에 따라 정규식을 조정해야 한다는 점에 유의하세요.
#Set Variables
# Get current date/time then subtract days to keep files.
$limit = (Get-Date).AddDays(-15)
#Set path of Files to be scanned & deleted
$path = "D:\BACKUPS\ConfigChange"
# Delete files older than the $limit and matching the dates in the file name.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.BaseName -match '(\d{2})-(\d{2})-(\d{2})_(\d{2})-(\d{2})-(\d{2})' -and $_.CreationTime -lt $limit } | Remove-Item -Force
#End of Script