Powershell LastWriteTime está incorreto

2

Estou executando o seguinte script para criar diretórios com base nos primeiros 9 caracteres nos nomes de arquivos no diretório e, em seguida, mover os arquivos para esses diretórios com base em seus nomes de arquivos.

dir | %{ 
    $id = $_.Name.SubString(0,9); 
    if(-not (Test-Path $id)) {mkdir $id}; 
    mv $_ "$id\$_";}

Agora, o que eu descobri é que depois de executar o script, as pastas estão sendo marcadas com um LastWriteTime há vários anos no passado.

Aqui está a saída do Powershell

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        13/04/2006   7:25 PM            XXX095_00
d----        13/04/2006   7:29 PM            XXX285_0_

Alguém pode me dizer de onde esse LastWriteTime está vindo?

    
por nate 13.05.2014 / 08:21

1 resposta

3

Mover um arquivo não parece contar como uma gravação. Eu acho que é porque você não está realmente escrevendo para o conteúdo do arquivo. Mas você pode atualizar o LastWriteTime você mesmo. Tente isto:

dir | %{ 
    $id = $_.Name.SubString(0,9); 
    if(-not (Test-Path $id)) {mkdir $id};
    $_.LastWriteTime = Get-Date;           # <---- Added line.
    mv $_ "$id\$_";}

(Você não precisa do ponto-e-vírgula, a propósito, quando suas declarações estão em linhas separadas.)

    
por 14.05.2014 / 02:45