gpt4 book ai didi

powershell - MoveNext 不适用于 -or 的一部分

转载 作者:行者123 更新时间:2023-12-03 01:22:41 25 4
gpt4 key购买 nike

我有一个简单的代码如下:

foreach ($someFile in Get-ChildItem) {
if (($someFile.Name.Substring(0,1) -eq "R") -or ($someFile.Name.Substring(0,1) -eq "S") {
$foreach.MoveNext() | Out-Null
$someFile.Name
}
}

这个简单示例的想法是输出所有文件名 除了 对于那些以字母“R”或“S”开头的人。

当我在一个目录中运行此文件时,该目录包含一个以“R”开头的文件和一个以“S”开头的文件以及其他一些文件,它会按预期跳过“S”文件,但仍会显示“R”文件名.

我知道还有其他方法可以做到这一点,但这是为了确保我使用的是 foreach在更复杂的代码中使用它之前正确地使用它。

任何人都可以看到上面的代码有什么问题吗?看起来它应该对我有用。我也确认了 $someFile.Name.Substring(0,1) -eq "R"返回 True正如预期的那样,对于“R”文件。

谢谢!

最佳答案

目前您正在返回 $someFile.Name ,这样就会得到 S文件时 R发生,在下一次迭代中,它将转到 T (或接下来的任何内容)而不是 S .当有多个 R 文件等时,逻辑也会崩溃。

如果您只想跳过 RS文件,可能你只想使用 continue :

foreach ($someFile in Get-ChildItem)
{
if (($someFile.Name.Substring(0,1) -eq "R") -or ($someFile.Name.Substring(0,1) -eq "S"))
{
continue

}
$foreach.Current.Name # $somefile.Name
}

此外,您可以使用 String.StartsWith而不是 SubString。或使用 -like并将其合并为一张支票。

关于powershell - MoveNext 不适用于 -or 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8313672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com