← Questões de Programação

Programação · FGV · 2021

Questão comentada de Programação

No seu notebook rodando Windows 10, João pretende remover alguns arquivos presentes na pasta C:\xpto e, recursivamente, as respectivas subpastas em todos os níveis. Devem ser removidos somente os arquivos cuja última alteração tenha ocorrido há mais de 14 dias. Por meio da PowerShell, o script adequado para essa remoção é:

Gabarito: E

A ideia aqui é simples: primeiro você lista os arquivos dentro de C:\xpto, incluindo as subpastas, e depois filtra apenas os que foram modificados há mais de 14 dias. Em PowerShell, isso normalmente é feito em duas etapas no pipeline: Get-ChildItem para localizar os itens e Where-Object para aplicar a condição de data. O ponto central é a propriedade LastWriteTime, que indica a última alteração do arquivo. Para pegar arquivos antigos, a comparação correta é com Get-Date).AddDays(-14), isto é, a data de hoje menos 14 dias. Se a última modificação for menor que esse limite, o arquivo entrou na lista de remoção. Depois do filtro, o resultado é passado para Remove-Item, que executa a exclusão. Essa ordem importa muito: primeiro selecionar, depois apagar. Se você inverter, mistura tudo e pode acabar tentando remover antes de filtrar, o que não faz sentido no fluxo do pipeline. Por isso o gabarito é a alternativa E: Get-ChildItem -Path "C:\xpto" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-14))} | Remove-Item. Ela faz exatamente o que o enunciado pede: varre recursivamente a pasta, seleciona os arquivos com mais de 14 dias e remove somente esses.

Continue treinando

Questões relacionadas