あるドライブから別のドライブにファイルをコピーしたいのですが、コピー先のファイルよりも新しいソース ファイルのみをコピーしたいです。ただし、過去 5 分以内に変更されたソース ファイルのみをコピーしたいです。
.bat 拡張子を持つファイルを 1 つ作成し、次のコマンドを使用しました:
xcopy "C:\Users\Pictures\Newfolder" "C:\Users\Pictures\Newfolder2\" /d:03/29/2019
しかし、このコマンドは日付用です。
答え1
この 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"
バッチファイルにラップされます:
:: 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%\"
)
現状では、過去 5 分間に作成/変更されたファイルのみがコピーされます。私の理解が間違っていて、
5 分より古いファイルは-gt
を に変更するという意味であれば-lt
、