用於複製檔案、迭代具有不同時間戳記的重複項以及忽略具有相同時間戳記的重複項的 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\"

相關內容