[英]Powershell Script to Copy Files to new Destination
我正在使用下面的 powershell 脚本根据日期范围将文件从 $Source 移动到 $Destination。 在测试期间,它会移动目录中可能已在日期范围内更新的所有文件,但我只需要目录/子目录中的更新文件或新文件。 我喜欢它的工作方式,除了复制所有内容。
关于如何调整脚本的任何想法?
$source = "C:\Documents and Settings"
$destination = "C:\Documents and Settings\Test"
[datetime]$start = '2/18/2021 11:00:00'
[datetime]$end = '2/18/2021 11:15:00'
#Prod
dir $source | %{ dir $_.FullName | ?{ $_.LastWriteTime -gt $start-and $_.LastWriteTime -lt $end } |
Copy-Item -Destination $destination -Recurse -Force }
我认为您可能需要做的是,如果您留在 Powershell 并且不使用 Robocopy 之类的工具来同步文件夹,那么您可能需要将路径递归提升一个级别,然后一次检查一个文件:
Get-ChildItem -Recurse
在源路径上递归ForEach-Object
Test-Path
(在路径中将$source
Replace
为$destination
)$source
Copy-Item
到$destination
文件不存在或LastFileWrite
属性在源路径较新在 Posh 中,您过滤到最左边以获得更快的结果。
$source = "C:\Documents and Settings"
$destination = "C:\Documents and Settings\Test"
[datetime]$start = '2/18/2021 11:00:00'
[datetime]$end = '2/18/2021 11:15:00'
Get-ChildItem -Path $source -Recurse | Where-Object { $_.lastwriteTime -le $start -lt $end } | ForEach-Object -Process { Copy-Item -Path $_.FullName -Destination $destination -Force }
当您 pipe 另一个dir
时,您正在做多余的工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.