Gostaria de copiar arquivos de uma unidade para outra, mas só quero copiar arquivos de origem mais recentes que o arquivo de destino. MAS, também quero copiar apenas os arquivos de origem que foram alterados nos últimos 5 minutos.
Criei um arquivo com extensão .bat e usei este comando:
xcopy "C:\Users\Pictures\Newfolder" "C:\Users\Pictures\Newfolder2\" /d:03/29/2019
Mas este comando é para data.
Responder1
Este script do PowerShell:
(Get-ChildItem 'C:\Users\Pictures\Newfolder' |
Where {!($_.PSIsContainer) -and
($_.LastWriteTime -gt [datetime]::now.AddMinutes(-5)) -and
(!(Test-Path (Join-Path 'C:\Users\Pictures\Newfolder2' $_.Name)))}).FullName"
agrupado em um arquivo em lote:
:: Q:\Test\2019\03\29\SU_1419009.cmd
@Echo off
Set "Src=C:\Users\Pictures\Newfolder"
Set "Dst=C:\Users\Pictures\Newfolder2"
For /f "usebackq delims=" %%A in (`
powershell -NoP -C "(Get-ChildItem '%Src%'|Where {!($_.PSIsContainer) -and ($_.LastWriteTime -gt [datetime]::now.AddMinutes(-5)) -and (!(Test-Path (Join-Path '%Dst%' $_.Name)))}).FullName"
`) Do (
echo Copy "%%A" "%Dst%\"
Copy "%%A" "%Dst%\"
)
Assim, isso copiará apenas os arquivos criados/alterados nos últimos 5 minutos, se eu entendi errado,
e você quer dizer que os arquivos com mais de 5 minutos mudam -gt
para -lt
.