Назад | Перейти на главную страницу

PowerShell Удалить каталог на основе даты в имени папки

Недавно я собрал сценарий PowerShell, который создает каталоги с именами по дате в следующем формате "ггггММддЧЧмм"

Что я пытался сделать, так это выяснить, как я могу вернуться и заставить сценарий (или просто создать новый) автоматически удалять любые каталоги, которым больше трех дней. Я хотел бы иметь возможность вытащить имя папки (например, прочитать дату в формате выше) и сделать это определяющим фактором, но я не уверен, с чего бы я вообще начал с этого. Думаю, было бы полезно знать, что это за шаги, чтобы я мог их разбить.

Кто-нибудь когда-нибудь пробовал что-то подобное с PowerShell?

Как насчет...

# Find today's date and calculate 3 days ago:
$today = get-date -DisplayHint date
$threeDaysAgo = $today.AddDays(-3)

# Get the folder list
$folders = (gci "c:\somwhere\" | where-object {$_.PSIsContainer -eq $True})

foreach ($f in $folders) {

    # Parse the date from the folder name text and turn into a date object
    $folderdate = get-date -year $f.Name.substring(0,4) -month $f.Name.substring(4,2) -day $f.Name.substring(6,2)

    # compare and do stuff
    if ($folderdate -lt $threeDaysAgo) { 
        write-host $f.Name
        # do delete here if needed
    }
}

Вам нужно будет настроить по своему вкусу и разобраться, нужно ли вам удалить каталог или контент, или что-то еще, но в любом случае это должно быть сделано для части даты.