Altera o CreationTime usando o nome do arquivo

0

Eu nomeio todos os meus arquivos de vídeo em casa de acordo com um protocolo exato. Um exemplo é: agosto 09,2005 @ 13.21.12.mp4

Normalmente, o arquivo original não é um mp4, então eu passo pelo processo de conversão, que altera a propriedade Data de criação. Embora eu possa entrar e alterar cada um individualmente, eu gostaria de usar um arquivo em lotes, seja através de um prompt CMD ou PowerShell que extrai a data e hora implícita no nome do arquivo e altera a propriedade Data de criação. Eu atualmente faço isso em duas etapas.

  1. O script CMD aqui link parece apenas alterar a data de modificação.
  2. Eu uso o PowerShell para definir a data de criação = para a data de modificação. Eu gostaria de me livrar de um desses passos. Tudo ajuda muito apreciada.
por ghepp 28.03.2016 / 23:26

1 resposta

0

Salve este script como Set-DateCreatedFromName.ps1 :

Param
(
    [string[]]$Path,
    [string]$Filter = '*.mp4',
    [switch]$Recurse
)

$Path | Get-ChildItem -Recurse:$Recurse -Filter $Filter | ForEach-Object {
    $DateTime = Get-Date
    $IsValidDate = [DateTime]::TryParseExact(
        $_.BaseName,
        # replace with 'MMM dd,[email protected]' if using single digit for hours/minutes/seconds
        'MMM dd,[email protected]',
        [System.Globalization.CultureInfo]::InvariantCulture,
        [System.Globalization.DateTimeStyles]::None,
        [ref]$DateTime
    )
    if($IsValidDate){
        $_.CreationTime = $DateTime
    }
}

Execute-o no PowerShell da seguinte forma:

& .\Set-DateCreatedFromName.ps1 -Path 'C:\MP4-1', 'D:\MP4-2' -Recurse -Filter '*.mp4'

Argumentos:

  • -Path - Obrigatório. Matriz de caminhos. Por exemplo: 'C:\MP4-1', 'D:\MP4-2'
  • -Recurse - Opcional. Recurse em subdiretórios, false se omitido.
  • -Filter - Opcional, *.mp4 se omitido.
por 30.03.2016 / 18:26