Скрипт PowerShell для копирования файлов, итерации дубликатов с разной временной меткой и игнорирования дубликатов с одинаковой временной меткой

Скрипт PowerShell для копирования файлов, итерации дубликатов с разной временной меткой и игнорирования дубликатов с одинаковой временной меткой

Начну с того, что я действительно не знаю powershell. Я инженер по автоматизации фармацевтических процессов, поэтому мой опыт — программирование ПЛК и проектирование 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\"

Связанный контент