如何在执行下一步之前检查所有字符串

How to check all strings before doing the next step

我想进行字符串比较。我使用 foreach 循环,但我想在比较完所有字符串后执行 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...

您可以尝试使用 notcontains 运算符来检查目录文件中出现的文件基名:

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

如果匹配项,您可以将变量设置为真:

$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
}