ファイルをコピーし、異なるタイムスタンプの重複を反復し、同じタイムスタンプの重複を無視する PowerShell スクリプト

ファイルをコピーし、異なるタイムスタンプの重複を反復し、同じタイムスタンプの重複を無視する PowerShell スクリプト

まず最初に言っておきますが、私は PowerShell をまったく知りません。私は製薬プロセスの自動化エンジニアなので、PLC プログラミングと HMI 設計の経験があります。あらゆる種類の言語を書いたことがありますが、決してプログラマーではありません。しかし、これが私たちが直面している状況です。必要なソリューションのコードを書こうとしているのですが、その方法が誰にもわかりません。

フォルダーが 2 つあります。1 つは無制限の NTFS アクセス許可を持つもので、もう 1 つはローカル管理者グループ以外のすべてのユーザーに対して読み取り専用アクセス許可を持つものです。無制限のフォルダーから読み取り専用アクセス許可を持つフォルダーにファイルをコピーする必要があります。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\"

関連情報