Необходимо сравнить дату с -gt
, иначе вы ищете файлы, которые были скопированы в это время EXACT.
Обратите внимание, что выполнение операции (Get-Date).AddDays(-1)
совершенно справедливо, но даст вам что-либо измененное за последние 24 часа.
$DestingationFolder = "\\Oracle\MP\"
$EarliestModifiedTime = (Get-date).AddDays(-1)
$Files = Get-ChildItem "D:\Shares\WinCAP Data\DAYPROT\OFS-222_2\*.csv" -File
foreach ($File in $Files) {
if ($File.LastWriteTime -gt $EarliestModifiedTime)
{
Copy-Item $File -Destination $DestingationFolder
Write-Host "Copying $File"
}
else
{
Write-Host "Not copying $File"
}
}
Если вы не хотите, чтобы выписать «Копирование ...» и «Не Копирование ...», то вы могли бы упростить это совсем немного.
$DestingationFolder = "\\Oracle\MP\"
$EarliestModifiedTime = (Get-date).AddDays(-1)
Get-ChildItem -File |? { $_.LastWriteTime -gt $EarliestModifiedTime } | Copy-Item -Destination $DestingationFolder
Наконец, если вы хотите скопировать что-либо с самого начала (например, в полночь в начале) вчера, то измените следующую строку:
$EarliestModifiedTime = (Get-date).AddDays(-1).Date
возможно дубликат [Powershell скрипт для копирования файлов на основе даты доработанной проверить новейший файл из удаленного местоположения] (http://stackoverflow.com/questions/29421519/powershell-script-to-copy-files -based-on-date-modifed-to-check-newest-file-from) – nimizen
Итак, вы хотели бы скопировать файлы, которые были изменены? Вы не используете '$ file' в строке' Copy-Item'. –
@Mr Дерево, Да только файлы, которые были изменены. –