Как проверить все строки перед выполнением следующего шага - PullRequest
0 голосов
/ 12 марта 2020

Я хочу выполнить сравнение строк. Я использую foreach l oop, но я хочу сделать move-item после сравнения всех строк.

Моя концепция такова: «Если все строки не совпадают, выполните move-item

Как я могу это сделать?

вот мой настоящий код, но он есть » если совпадение, сделайте move-item

$Myfile=dir *my file name*
$directory=dir D:\example    (there are many directory)

foreach($dir in $directory){
 if($dir match $Myfile.basename ){
   move-item $Myfile.fullname -destination D:\example
 }
}

Я хочу сделать move-item после сравнения строк, чтобы убедиться, что my file name не существует $directory вот что я хочу достичь

if( ("all of the directory Name") -notmatch $myfile.basename ){
  move-item XXX to XXX
}

если я использую -notmatch, он будет делать move-item в первый раз l oop. Поэтому мне нужно сделать move-item после проверки их всех ...

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Вы можете установить переменную в true, если что-то совпадает:

$Myfile=dir *my file name*
$directory=dir D:\example    (there are many directory)

$move = $false
foreach($dir in $directory){
    if($dir match $Myfile.basename ){
        $move = $true
    }
}
if ($move){
    move-item $Myfile.fullname -destination D:\example
}
0 голосов
/ 12 марта 2020

Вы можете попробовать использовать оператор notcontains, чтобы убедиться, что базовое имя файла отображается в файлах каталога:

$myfile = get-childitem "filepath"
$directory = @(get-childitem "D:\Example" | foreach {$_.basename})
if ($directory -notcontains $myfile.basename) {
  move-item xxx to xxx
}
...