Comandos Powershell para modificar arquivos se os tempos acessados estiverem dentro de uma janela de tempo

2

Eu estou tentando aprender o Windows powershell e, em particular, gostaria de escrever um script para operar em todos os arquivos dentro de uma pasta (incluindo subdiretórios). O script examinará cada arquivo e, se o horário de criação do arquivo estiver dentro de uma janela, por exemplo, das 14h às 18h, o horário de criação deverá ser definido para um determinado datetime, $ my_date.

Eu tenho o seguinte, mas estou lutando para fazê-lo funcionar. Eu me pergunto se alguém poderia por favor me ajudar?

Get-Childitem |
ForEach-Object {
$date = $_.CreationTime
if ( ($date.ToString('HH') -eq 14) -or ($date.ToString('HH') -eq 15) -or ($date.ToString('HH') -eq 16) -or ($date.ToString('HH') -eq 17) -or ($date.ToString('HH') -eq 18))
{$_.CreationTime=$my_date}
    
por user295396 02.02.2014 / 01:06

1 resposta

0

Você pode definir a notação .. no Powershell para criar um intervalo de valores inteiros e pode usar o operador -in para verificar se um valor aparece no intervalo.

# Define a range from 2pm - 6pm 
$hourRange = 14..24

# New date to set.
$myDate = [datetime]::Now

# Get files & folders
Get-ChildItem | Where-Object { 

    # Which creation times fall within the hour range.
    $_.CreationTime.Hour -in $hourRange } | ForEach-Object {

        # Change the creation time.
        $_.CreationTime = $myDate
}
    
por 05.09.2014 / 19:13