Сортировка файлов по дням создания - PullRequest
1 голос
/ 24 сентября 2019

Существует отчет, который запускается каждый день (у нас есть выбор только ежедневно или ежемесячно), и нам нужен только один день недели для загрузки.Мне нужно переместить файл, созданный в понедельник, и удалить все остальные файлы в каталоге.

Мне удалось получить время создания в одной переменной, а затем использовать другую переменную для извлечения дня недели.Это будет работать только для одного файла, поэтому мне нужно добавить оператор foreach в этот процесс.

$FileDate = (Get-ChildItem "c:\temp\version.ps1").CreationTime
Write-Output $filedate

$day = (Get-Date $filedate).DayOfWeek

if ($day -eq "Monday") {
    Write-Output Correct file, copy to another directory
} else {
    Write-Host Delete file
}

Сценарий работает только для одного файла, а не для всего каталога.Что мне нужно сделать, это посмотреть на дату создания каждого файла и, если это с понедельника, переместить его, а все остальные будут удалены.

Ответы [ 2 ]

2 голосов
/ 24 сентября 2019

Используйте Where-Object для фильтрации файлов, не созданных в определенный день, затем переместите их и удалите остальные.

Get-ChildItem 'C:\temp' | Where-Object {
    $_.CreationTime.DayOfWeek -ne 'Monday'
} | Move-Item -Destination 'C:\somewhere\else\' -WhatIf
Remove-Item 'C:\temp\*.*' -WhatIf

Перезапустите без переключателей -WhatIf после того, как вы убедились, что толькотребуемые файлы будут перемещены, и будут удалены только те, которые вы хотите удалить (однако, о перемещенных файлах также будет сообщено как об удаленных, поскольку они еще не перемещены).

0 голосов
/ 24 сентября 2019

Передайте результаты в foreach, чтобы выполнить итерацию по каждому полученному файлу, затем выполните соответствующее действие:

Get-ChildItem c:\temp | foreach {

    $day = $_.CreationTime.DayOfWeek

    if ($day -eq "Monday") {
        Move-Item $_ $destination
    } else {
        Remove-Item $_
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...