gpt4 book ai didi

powershell - 在PowerShell中复制文件太慢

转载 作者:行者123 更新时间:2023-12-03 00:17:16 24 4
gpt4 key购买 nike

大家好这里是新成员,并且是PowerShell的相对较新的成员,因此我很难弄清楚这一点。我已经搜索了2天,但没有找到任何适合我需求的内容。

我需要使用映射驱动器将在当前日期创建的文件夹复制到另一个位置。这些文件夹根据语言位于其他5个文件夹中。

Folder1 \ Folder2 \ Folder3 \ Folder4 \ chs,enu,jpn,kor,tha

所有要复制的文件夹均以相同的字母开头,后跟数字-abc123456789_111。使用以下脚本,我不必担心文件夹名称,因为只有我需要的文件夹才具有当前日期。

abc *文件夹所在的文件夹大约包含35k文件,每个文件夹超过1500个。

我已经使用Get-ChildItem来完成所有这些工作,但是它是如此之慢,以至于开发人员可以在脚本完成时手动复制文件。这是我的脚本:

GCI -Path $SrcPath -Recurse | 
Where {$_.LastWriteTime -ge (Get-Date).Date} |
Copy -Destination {
if ($_.PSIsContainer) {
Join-Path $DestPath $_.Parent.FullName.Substring($SrcPath.length)
} else {
Join-Path $DestPath $_.FullName.Substring($SrcPath.length)
}
} -Force -Recurse

(此操作目前仅复制到一个目标文件夹。)

我也一直在研究使用 cmd /c dircmd /c forfiles,但无法解决。 Dir将列出文件夹,但不会按日期列出。事实证明,Forfiles也相当慢。

我不是开发人员,但我正在尝试学习尽可能多的东西。任何帮助/建议,我们将不胜感激。

最佳答案

@BaconBits是正确的,您在复制项以及getchild项上都有递归。这将导致很多多余的无意义副本,这些副本由于您的force参数而被覆盖。更改脚本以执行foreach循环,并从copy-item中删除recurse参数

GCI -Path $SrcPath -Recurse | 
Where {$_.LastWriteTime -ge (Get-Date).Date} | % {
Copy -Destination {
if ($_.PSIsContainer) {
Join-Path $DestPath $_.Parent.FullName.Substring($SrcPath.length)
} else {
Join-Path $DestPath $_.FullName.Substring($SrcPath.length)
}
} -Force
}

关于powershell - 在PowerShell中复制文件太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31731860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com