Перемещать файлы которые старше 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

}

1
Автор поста оценил этот комментарий
Чтобы перемещать файлы, которые старше 15 дней, из папки в папку, что за вопросы?
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Гос. организация, тут все так по уебанскому сделано, я даже почистить ничего не могу без согласования.

0
Автор поста оценил этот комментарий

через robocopy много что делал. Там и одной строкой это практически делается. Команда "искаропки в винде"

robocopy D:\source e:\dest *.* /MT:32 /MINAGE:14 /MOVE /R:10 /W:60 /V /J /UNILOG:D:\source\robocopy.log

Чем не так?


ОТветил еще раз. Попробуйте протестировать.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Так, я что-то не увидел, а он структуру папок оставляет на месте?
показать ответы
0
Автор поста оценил этот комментарий

через robocopy много что делал. Там и одной строкой это практически делается. Команда "искаропки в винде"

robocopy D:\source e:\dest *.* /MT:32 /MINAGE:14 /MOVE /R:10 /W:60 /V /J /UNILOG:D:\source\robocopy.log

Чем не так?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Есть команда?
показать ответы
5
Автор поста оценил этот комментарий

и пролежит в исходной папке 29дней. вместо заявленных 15.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Да, логика понятна, тогда в шедуллере можно поставить проверку на каждый день. Спасибо что поправил!

3
Автор поста оценил этот комментарий

если выполнять скрипт раз в 15 дней, первый раз я запущу его сегодня, а файл был создан 14 дней назад, то...

раскрыть ветку (1)
Автор поста оценил этот комментарий

То он останеться на месте, до следующего цикла.

показать ответы
0
Автор поста оценил этот комментарий
в корзину
раскрыть ветку (1)
Автор поста оценил этот комментарий

Я думал, но потом файлы из бекапа восстанавливать, если пользователь проебался.

показать ответы
3
Автор поста оценил этот комментарий
Какой же Повершелл уебищный (
раскрыть ветку (1)
Автор поста оценил этот комментарий

Имеем что имеем)

2
Автор поста оценил этот комментарий

А нахрена?

раскрыть ветку (1)
Автор поста оценил этот комментарий

Задача прилетела: Есть сетевая папка "обмен", но пользователи ее решили использовать под постоянную хранилку (хотя нормальные сетевые папки присутствуют), но зная пользователей, если я буду просто удалять файлы то они будут писать "я не успела забрать файл" и мне придется его восстанавливать из бекапа, а так, на передержку буду перемещать файлы в отдельную директорию и через 3-4 месяца удалять.

показать ответы