Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   изменение даты/времени папки по ее имени (http://forum.oszone.net/showthread.php?t=332110)

pzh2393 25-12-2017 14:38 2786836

изменение даты/времени папки по ее имени
 
Добрый день!
Прошу помощи.
Есть множество папок (с вложениями) вида:
2016.01.12 - текст
2015.01 - текст
2017 - текст
Необходимо изменить дату создания всех папок на основании даты из имени этой папки.
В тех случаях где нет месяца или дня просто ставим значение "01".
Время создания можно любое (для всех одно и то же).

Iska 31-12-2017 07:12 2788210

На PowerShell:
Скрытый текст
Код:

$sSourceFolder = 'C:\Мои проекты\0140'

if(Test-Path -LiteralPath $sSourceFolder -PathType Container) {
    Get-ChildItem -LiteralPath $sSourceFolder -Recurse -Directory |`
        ForEach-Object -Process {
            if($_.Name -match "^(\d{4}|\d{4}\.\d{2}|\d{4}\.\d{2}\.\d{2}) - .+$") {
                $sDate = $matches[1]
                       
                if($sDate.Length -eq 4) {
                    $dtDate = [System.DateTime]::ParseExact($sDate, "yyyy", $null)
                } elseif($sDate.Length -eq 7) {
                    $dtDate = [System.DateTime]::ParseExact($sDate, "yyyy.MM", $null)
                } else {
                    $dtDate = [System.DateTime]::ParseExact($sDate, "yyyy.MM.dd", $null)
                }

                $_.CreationTime = $dtDate
            }
        }
} else {
    Write-Host "Can't find source folder [$sSourceFolder]." -ForegroundColor Red
}



Время: 22:57.

Время: 22:57.
© OSzone.net 2001-