Как скопировать файл на основе совпадения имени файла с помощью PowerShell? - PullRequest
0 голосов
/ 01 октября 2019

enter image description here

Я хочу проверить файл .jpg во 2-й папке. Вторая папка имеет некоторую подпапку. если .jpg существует в подпапке 2-й папки, я скопирую файл из 1-й папки в подпапку 2-й папки на основе базового имени. Я попробовал этот код, я могу проверить существование .jpg, а затем сопоставить файл с 1-й папке. Моя проблема, я не могу скопировать, если файл .jpg больше 1, и когда я копирую файл, я не могу указать, какую подпапку мне следует скопировать.

Я пробовал это:

$JobInit  = "D:\Initial"
$JobError = "D:\Process"

if (Test-Path -Path "$JobError\*\*.jpg") {
    Write-Host "Error Exist"
    $L_Name = "15"
    $ErrorFile = Get-ChildItem -Path "$JobError\*\*.jpg" |
                 ForEach-Object { $_.BaseName.Substring($L_Name) }

    $Path_ = Get-ChildItem -Path "$JobError\*\*.jpg"
    $Split = Split-Path -Path $Path_

    $NewJob = @(Get-ChildItem -Path "$JobInit\*.png" -File -Recurse |
              Where-Object { "$ErrorFile" -contains $_.BaseName })
    Write-Host $NewJob

    $Timestamp = Get-Date -Format yyyyMMddhhmmss
    $CopyJob = Copy-Item $NewJob -Destination "$Split"
    $Rename = Get-ChildItem "$Split\*.png" |
              Rename-Item -NewName {"$Timestamp`_" + $_.Name.Replace('.png','.gif')}
}

1 Ответ

1 голос
/ 01 октября 2019

Предполагая, что я правильно понял ваш вопрос, и вы хотите заменить существующие файлы JPEG в папке «Process», если у них есть соответствующий файл PNG в папке «Initial», следующее должно помочь:

$L_Name = 15
Get-ChildItem -Path "$JobError\*\*.jpg" | ForEach-Object {
    $basename = $_.BaseName.Substring($L_Name)

    $png = "$JobInit\${basename}.png"
    if (Test-Path $png) {
        $timestamp = Get-Date -Format 'yyyyMMddhhmmss'
        $dst = Join-Path $_.DirectoryName "${timestamp}_${basename}.jpg"
        Copy-Item $png $dst -Force
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...