Поскольку LastWriteTime
является DateTime
-ge
сравнивая точное время. Вот пример, который копирует, используя диапазон дат, который, я считаю, вам нужен.
$SourceFolder = "C:\documents\testing123.txt"
$targetFolder = "D:\documents"
$startTime =[DateTime]"08/01/2015"
$endTime = $startTime.AddDays(1)
Get-ChildItem -Path $SourceFolder -Filter E0100* |
Where-Object {$_.LastWriteTime -ge $startTime -and $_.LastWriteTime -lt $endTime} |
Move-Item -destination $targetFolder
Как уже упоминалось, путь к исходной папке кажется неправильным.
Вот robocopy
версии сценария я попробовал (дату, путь и фильтр были изменены)
$SourceFolder = "D:\test"
$targetFolder = "D:\test2"
$startTime =[DateTime]"01/05/2017"
$endTime = $startTime.AddDays(1)
$files = @()
Get-ChildItem -Path $SourceFolder -Filter * |
Where-Object {$_.LastWriteTime -ge $startTime -and $_.LastWriteTime -lt $endTime -and $_.Attributes -ne 'Directory'} |
ForEach-Object { $files += $_.Name}
if($files.Count -gt 0)
{
Write-Verbose "running robocopy $SourceFolder $targetFolder $files /mov" -Verbose
robocopy $SourceFolder $targetFolder $files /mov
}
Я бы рекомендовал использовать 'robocopy' вместо этого. –
Должен ли $ SourceFolder быть папкой, а не файлом? –
Кроме того, сравнение LastWriteTime с строкой даты вряд ли будет работать, так как оно не включает время. Вы можете рассмотреть $ _. LastWriteTime.Date -eq "08/01/2015" –