gpt4 book ai didi

Powershell如何知道列表的元素是否连续编号

转载 作者:行者123 更新时间:2023-12-02 01:57:15 24 4
gpt4 key购买 nike

我想知道是否所有 PC 都在列表中,如果有一台不在列表中,脚本会告诉我,可以使用更多 PC 来修改列表。


$equipos= "equipo1","equipo2","equipo3","equipo5"
[char]$nequipos = 1

for($i=0;$i -lt $equipos.count;$i++){
[char]$num = $equipos[$i][6]
if($num -ne $nequipos){
write-host "equipo"$nequipos
}
[char]$nequipos= $i++
}

最佳答案

以下内容查找编号中的空白,并根据缺失的编号列出所有可用名称:

# Extract all numbers contained in the names.
[int[]] $numbers = "equipo1", "equipo2", "equipo3", "equipo5" -replace '\D'
# Find the highest number.
$highestNumber = [Linq.Enumerable]::Max($numbers)

# Find all unused numbers.
$unusedNumbers = Compare-Object $numbers (1..$highestNumber) -PassThru

# Report results.
if ($unusedNumbers) {
Write-Verbose -Verbose "The following names are available: "
$unusedNumbers.ForEach({ 'equipo' + $_ })
} else {
Write-Verbose -Verbose "No gaps in numbering found."
}

输出:

VERBOSE: The following names are available:
equipo4

注意:

  • -replace '\D' 从名称中删除所有非数字 (\D) 字符,并将结果字符串转换为 [int[]]为了获取数字数组。

  • [Linq.Enumerable]::Max($numbers) 查找其中的最大值(最高数字)。请参阅.NET docs .

  • Compare-Object用于将提取的数字与从 1 到最高数字 (1..$最高编号)。默认情况下,会报告输入集合之间不同的元素,并且借助 -PassThru,直接输出范围中缺少的提取数字。 p>

  • $unusedNumbers.ForEach({ 'equipo' + $_ }) 使用 ..构建范围内未使用数字的名称列表。

关于Powershell如何知道列表的元素是否连续编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69498208/

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