使用Powershell Get-ChildItem移动具有特定日期的文件

时间:2017-01-05 19:18:51

标签: powershell scripting

需要一些PowerShell脚本的帮助。 我需要按照具有相似名称的特定上次修改日期移动文件。 这是我尝试运行的脚本,它只是挂起......

$SourceFolder = "C:\documents\testing123.txt" 

$targetFolder = "D:\documents"   

Get-ChildItem -Path $SourceFolder -Filter E0100* | where-object {$_.LastWriteTime -eq ("08/01/2015") | move-item -destination $targetFolder

1 个答案:

答案 0 :(得分:2)

因为LastWriteTimeDateTime -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
}