Como atualizar automaticamente a data modificada da pasta no Windows

3

No Windows, existe uma maneira de atualizar automaticamente (ou com um script simples) a data de uma pasta com a última data modificada de qualquer um dos seus arquivos (recursiva)?

    
por Notitze 01.06.2010 / 11:05

7 respostas

4

Você pode fazer isso no PowerShell. Algo parecido com isto para atualizar a pasta atual com base nos arquivos que ela contém diretamente:

$lastModified = (dir . | ?{!$_.PSIsContainer} | sort LastWriteTime | select -last 1).LastWriteTime
$folder = get-item .
$folder.LastWriteTime = $lastModified

(Isso falhará se não houver arquivos na pasta ou se o usuário não tiver permissões adequadas.)

EDIT: Certifique-se de que apenas um arquivo (o último) seja encontrado, portanto, o pipeline de classificação tem um resultado singular.

    
por 01.06.2010 / 11:54
2

Acabei de fazer um teste simples - se você criar um arquivo vazio no diretório, ele alterará a data de modificação da pasta para esse horário. Quando você exclui o arquivo, isso ainda conta como uma modificação, por isso, ele permanece modificado nesse momento.

Para fazer isso de forma recursiva, você teria que criar um arquivo vazio em cada pasta na qual deseja alterar a data. Essa ainda é uma solução bastante simples se você estiver disposto a fazer alguma programação simples.

Se você quiser alterar a data para algo diferente do horário atual, obviamente esta solução não funcionará.

    
por 05.10.2013 / 18:55
1

Você pode usar o Bulk File Changer .

BulkFileChanger is a small utility that allows you to create files list from multiple folders, and then make some action on them - Modify their created/modified/accessed time, change their file attribute (Read Only, Hidden, System), run an executable with these files as parameter, and copy/cut paste into Explorer.

    
por 01.06.2010 / 11:10
0

Não é bonito, mas funcional. Feito em bash / cygwin

==================
find -maxdepth 1 -type d | grep -v "^\.$" | while read D ; do
  cd "$D"
  F='ls -1tr | tail -1'
  cd ..
  touch -r "$D/$F" "$D"
done
==================

Brian

    
por 05.10.2013 / 18:51
0

Aqui está uma versão modificada da resposta de Richard. É também o script do PowerShell. Em vez de definir o horário modificado do diretório atual , ele define o horário modificado de todos os subdiretórios de primeiro nível do diretório atual. Outra diferença é que parece recursivamente para o último tempo modificado. Espero que seja útil para outra pessoa.

$parentPath = Get-Location
Get-ChildItem | where {$_.PsIsContainer} | foreach {
    cd -LiteralPath $_.FullName
    $files = dir -Recurse . | where {-Not $_.PsIsContainer}
    if ($files.Count -eq 0) {
        echo "note: $($_.Name) contains no files"
    } else {
        $_.LastWriteTime = ($files | sort LastWriteTime | select -last 1).LastWriteTime
    }
}
cd -LiteralPath $parentPath
    
por 01.01.2017 / 21:36
0

Não faça nada! Missão cumprida!

A data da última modificação de uma pasta é sempre a do último arquivo modificado.

    
por 03.04.2017 / 10:02
0

FolderTimeUpdate

pelo prolífico Nir Sofer (o mesmo autor do Bulk File Changer em um menos relevante answer ).

Além de não ser configurável automaticamente na GUI, sua funcionalidade é quase exatamente da forma desejada:

FolderTimeUpdate is a simple tool for Windows that scans all files and folders under the base folder you choose, and updates the 'Modified Time' of every folder according the latest modified time of the files stored in it.

Há um bom controle sobre profundidade da subpasta para pesquisar, incluir e excluir curingas e até mesmo as opções sobre se o tempo de criação do arquivo também (o mesmo que o tempo modificado, ou coincide com a criação mais antiga ou o tempo modificado). A maior parte disso pode ser realizada também na linha de comando, portanto, tecnicamente, você pode automatizá-la configurando-a para ser executada em intervalos, ou talvez até mesmo monitorar certas pastas.

    
por 04.06.2018 / 05:02

Tags