【问题标题】:Powershell new array from concatenation of one word with another arrayPowershell新数组来自一个单词与另一个数组的连接
【发布时间】:2015-09-03 02:03:54
【问题描述】:

在 Powershell 中,我正在尝试列出要从采用排除参数的各种命令中排除的文件,例如Get-ChildItem

我正在处理的文件属于各种项目,并表示连续的页码,因此对于给定的项目 A,它会有文件 projA.1projA.2 等。我希望能够制作要排除的页码列表(不是文件),但将该列表应用于多个项目,所以我觉得我想要做的是有一组排除的页码,然后连接到项目名称并作为排除参数传递。但是,我不知道是否有一种紧凑的方法可以做到这一点。到目前为止,这是我所拥有的:

# Source and destination projects with files named projA.1, projA.2,...,projA.n, etc. 
$sourceProject = "projA"
$destProject = "projB"

# List of pages which will be excluded
$pageExclusions =@( 
"1",
"27",
"28",
"29",
"30",
"31",
"32",
"33",
"34",
"35",
"36",
"37",
"38",
"40")

$sourceExclusions = @()
foreach($i in $pageExclusions){
    $sourceExclusions = $sourceExclusions + ($sourceProject + "." +  $i)
}

# ... later I will use $sourceExclusions as an exclude filter, e.g.:
Get-ChildItem projA.* -Exclude $sourceExclusions

# and I'd need to repeat the same for projB

在我的代码示例中,是否有一个简洁的符号表示“sourceExclusions 是一个新数组,其长度与$pageExclusions 相同,但每个条目都是文件名projA,对应的扩展名来自@987654328 @”?

或者,甚至更好的是,有没有一种方法可以将它们直接传递给 exclude 参数,从而得到$sourceExclusions

【问题讨论】:

    标签: powershell


    【解决方案1】:

    你有这样的想法吗?

    Get-ChildItem -Exclude ($pageExclusions | % { "$sourceProject.$_","$destProject.$_" })
    

    这将排除projA.1projB.1 等。 如果你仍然需要它只返回文件数学 projA.*projB.* 你可以像这样扩展它

    Get-ChildItem -Exclude ($pageExclusions | % { "$sourceProject.$_","$destProject.$_" }) | ? { $_.Name -match "$sourceProject\.|$destProject\." }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2021-04-12
      • 1970-01-01
      • 2021-09-20
      相关资源
      最近更新 更多