我们正在处理文件timecrunch。从一堆目录中需要一堆来自4/9/2019的文件。每个目录都有〜1000个文件。我们要将所有这些文件从4/9/2019复制到各自的文件夹结构中,但仅复制这些文件。
我们使用xcopy复制了文件夹结构,并一直在手动复制所需的文件。但是,有1000个文件夹,每个文件夹包含约1000个文件,因此这是一个很大的障碍。试图将我们的论点传递给复制项目,但并没有给我带来太多的运气。
即使我的代码乱码,我仍然假设有一些简单的参数或我忽略的东西。我们一直在努力工作,我浏览了许多主题,并向社区寻求帮助。我很可能在这里碰到了我的确切问题。
为便于记录,我不编写代码,不经常使用PowerShell。
#Gets all files that were last modified on 4/9/2019
(Get-ChildItem -Recurse | Where-Object {$_.LastWriteTime -gt (Get-Date -month 4 -day 9 -Format d) -and $_.LastWriteTime -lt (Get-Date -month 4 -day 10 -Format d)}) |
#Copies the files from source to destination
Copy-Item "C:\abc\" "D:\abc\"
}
答案 0 :(得分:0)
在使用[datetime]类型变量时,不适用于-format D
的变量将转换为字符串,
而是通过在两边都附加.Date
并测试是否相等来剥离时间分量。
在将源递归到子文件夹时,无法指定平面目标
$Source = "C:\abc\"
$Target = "D:\abc\"
$MyDate = (Get-Date -Month 4 -Day 9 -Year 2019).Date
Get-ChildItem -Path $Src -Recurse |
Where-Object {$_.LastWriteTime.Date -eq $MyDate} | ForEach-Object{
$TargetDir = $_.DirectoryName.replace($Source,$Target)
If (!(Test-Path $TargetDir)){New-Item $TargetDir -ItemType Directory|Out-Null}
$_ | Copy-Item -Destination $TargetDir
}
未经测试,您可以在测试时将-WhatIf
参数附加到Copy-Item
。
一旦找到正确的参数,自动复制肯定会更快。