Перемещать файлы которые старше 15 дней
Не на что не притендую, просто может кому то пригодиться, а то тут задача прилетела.
Создал скрипт который будет перемещать файлы, которые старше 15 дней, в другую папку.
Просто создайте ps1 файл.
Настройте задание в планировщике задач (Task Scheduler) Windows для запуска этого BAT файла раз в 15 дней:
1) Откройте "Планировщик задач".
2) Создайте новую задачу.
3) В разделе "Триггеры" добавьте новый триггер с расписанием "Каждые 15 дней".
4) В разделе "Действия" добавьте новое действие "Запустить программу" и укажите путь к вашему ps1 файлу.
5) Сохраните задачу.
Сам файл.
# Определяем исходную папку, целевую папку и путь к файлу журнала
$source = "D:\Pavel\test"
$destination = "D:\Pavel\servers"
$log = "D:\Pavel\move_log.csv"
# Перемещаем файлы старше 15 дней из исходной папки в целевую папку, сохраняя структуру папок
Get-ChildItem -Path $source -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-15))} | ForEach-Object {
$destPath = $_.FullName -replace [regex]::Escape($source), $destination
$destFolder = Split-Path $destPath -Parent
if (!(Test-Path -Path $destFolder)) {
New-Item -ItemType Directory -Path $destFolder -Force
}
Move-Item -Path $_.FullName -Destination $destPath -Force
}
# Добавляем заголовки в журнал
Add-Content -Path $log -Value "Source, Destination, Date Moved"
# Добавляем записи о перемещенных файлах в журнал
Get-ChildItem -Path $destination -Recurse | ForEach-Object {
$sourcePath = $_.FullName -replace [regex]::Escape($destination), $source
$logData = $sourcePath + "," + $_.FullName + "," + (Get-Date).ToString('yyyy-MM-dd')
Add-Content -Path $log -Value $logData
}
