PowerShell 脚本用于复制文件、迭代具有不同时间戳的重复项并忽略具有相同时间戳的重复项

PowerShell 脚本用于复制文件、迭代具有不同时间戳的重复项并忽略具有相同时间戳的重复项

首先我要说的是,我真的不懂 powershell。我是一名制药过程自动化工程师,所以我的经验是编程 PLC 和 HMI 设计。我写过各种语言,但我绝不是一名程序员。但这就是我们所处的情况,我们试图为一个需要的解决方案编写代码,而其他人都不知道该怎么做。

我有两个文件夹。一个具有不受限制的 NTFS 权限,另一个对除本地管理员组之外的所有人具有只读权限。我需要将文件从不受限制的文件夹复制到具有只读权限的文件夹。我本来打算使用 robocopy,但如果目标中存在具有相同名称但(不同)时间戳的文件名,我需要增加文件名,如果时间戳相同,则不复制它。Robocopy 无法做到这一点。

我找到了一个适用于增量但不考虑时间戳的示例脚本,问题是我使用任务计划程序在每次打印 PDF 时触发此脚本。脚本将打印的 PDF 从一个文件夹移动到另一个文件夹,但当前脚本每次运行时都会继续制作带有递增编号的新副本。这不符合我的需要。我对 powershell 了解不够多,无法弄清楚如何让它考虑时间戳并增加具有不同时间戳的文件并忽略具有相同时间戳的文件。

这是我目前的脚本:

function fcopy ($SourceDir,$DestinationDir)
{
    Get-ChildItem $SourceDir -Recurse | Where-Object { $_.PSIsContainer -eq $false } | ForEach-Object ($_) {
        $SourceFile = $_.FullName
        $DestinationFile = $DestinationDir + $_
        if (Test-Path $DestinationFile) {
            $i = 0
            while (Test-Path $DestinationFile) {
                $i += 1
                $DestinationFile = $DestinationDir + $_.basename + $i + $_.extension
            }
        } else {
            Copy-Item -Path $SourceFile -Destination $DestinationFile -Verbose -Force
        }
        Copy-Item -Path $SourceFile -Destination $DestinationFile -Verbose -Force
    }
}
fcopy -SourceDir "C:\SoloVPE\UV1325A_Reports\" -DestinationDir "C:\UV1325A_Reports_Share\"

相关内容