我需要浏览一个大文件夹(我们称之为D:\ Files),其中包含大约50.000个文件夹和大约100万个文件,并复制2012年8月31日之后创建(未修改)的所有文件夹,包括所有文件夹他们的子文件夹(包括第二/第三/第四级深子文件夹等)和文件(也包括子文件夹中的文件,无论何时更改)都在这些文件夹中,无论何时创建它们,只要它们在8月以后创建的“更高”文件夹到另一个驱动器(称为E:\ Space) - 仍保留原始文件夹结构,因此之前的文件位于D:\ Files \ Folder1 \ Subfolder3 \ hello.txt中然后应该在E:\ Space \ Folder1 \ Subfolder3 \ hello.txt
背景是,8月之后在结构中创建了一些文件夹,但是其中的文件确实有较旧的修改日期,我需要在2012年8月31日之后添加到D:\ Files的搜索过程中包含所有内容,所以我无法弄清楚最近添加了哪些文件,以及8月之前已经存在哪些文件,我需要搜索文件夹创建日期。
因此,如果文件夹D:\ Files \ Folder1是在9月份创建的,那么文件和文件夹就在其中 - 无论是更改/修改过的一层,两层,三层,四层等等,都应该用powershell移动到E:\ Space。
我在过去的两天里尝试过,但到目前为止失败了。
我知道使用Powershell可能并不容易,因为它需要几个步骤,但是我们将非常感谢任何帮助。
非常感谢。
答案 0 :(得分:0)
尝试这样的事情:
$srcRoot = "D:\Files"
$dstRoot = "D:\Space"
$ct = Get-Date "2012-09-01"
Get-ChildItem -Recurse $srcRoot | ? {
$_.PSIsContainer -and $_.CreationTime -ge $ct
} | sort FullName | % {
$name = $_.FullName
if ($top -eq $null) {
$top = $name
} elseif ( $name.substring(0, [math]::Min($top.Length, $name.Length)) -ne $top ) {
$top = $name
$dst = $_ -replace [regex]::Escape($srcRoot), $dstRoot
Copy-Item $name $dst -Recurse -Force
}
}
答案 1 :(得分:0)
您应该考虑使用robocopy.exeto解决任务。
如果您正在寻找ps解决方案,请查看脚本游戏2013事件1提交