我想复制从脚本开始运行到一小时之前的时间戳的文件。所以我基本上试图模仿robocopy,但是minage和maxage下降到确切的时间而不是几天。到目前为止,我在powershell中有这个:
$now = Get-Date
$previousHour = $now.AddHours(-1)
"Copying files from $previousHour to $now"
function DoCopy ($source, $destination)
{
$fileList = gci $source -Recurse
foreach ($file in $fileList)
{
if($file.LastWriteTime -lt $now -and $file.LastWriteTime -gt $previousHour)
{
#Do the copy
}
}
}
DoCopy "C:\test" "C:\test2"
但如果我尝试复制这样的副本,它会将所有文件直接复制到目标文件夹而不是子文件夹。enter code here
答案 0 :(得分:3)
您必须为复制的每个文件生成整个目标路径。最简单的方法是将源文件夹替换为目标文件夹。您可以使用以下命令替换复制命令:
copy $file $file.FullName.Replace($source, $destination)
请注意,您可以使用此单行替换整个功能:
gci $source -recurse | ?{$_.LastWriteTime -lt $now -and $_.LastWriteTime -gt $previousHour} | %{copy $_ $_.FullName.Replace($source, $destination)}
关于上述的一些注释: