PowerShell с использованием Test-Path для сравнения части имени файла - PullRequest
0 голосов
/ 27 мая 2020

Я пытаюсь сравнить 2 файла в разных папках, но мне нужно использовать первые 8 символов имени файла. ниже то, что я пробовал, но у меня нет никакой радости

$Source = "Path To PDF Files"
$Compare = "Path To PDF Files i Want To Comapare" 

GCI $Source | ForEach-Object{

if(Test-Path "$Compare\$($_.Name.Substring(0,8))") {

Move-Item $Compare\$($_.Name) "\\Destination\" 

    }
 }

1 Ответ

1 голос
/ 27 мая 2020

после того, как @Lee_Dailey указал мне в правильном направлении, я изменил способ, которым я это сделал. Ниже приведен фрагмент кода, который я написал, чтобы обойти проблему.

это будет искать номер, добавленный в конец файла, и удалять его, например

file(1).pdf он удалит (1)

$SignedNt = GCI "PATH TO FILES" -Filter *.pdf 
$Pattern = "[(#)]"
ForEach($Sign in $SignedNt){
    if($Sign -match $Pattern){
    Rename-Item -Path $Sign.FullName -NewName (($Sign.Name)-replace '\([0-9]\)' , '') 

    }
}

один раз это очищает файл, затем запускает приведенный ниже код, сравнивает и перемещает его, что, в свою очередь, отвечает на мой вопрос.

$Source = "Path To PDF Files"
$Compare = "Path To PDF Files i Want To Compare" 

GCI $Source | ForEach-Object{

if(Test-Path "$Compare\$($_.Name)") {

Move-Item $Compare\$($_.Name) "\\Destination\" 

    }
 }

надеюсь, что это поможет следующему человеку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...