0

Powershell では、除外パラメーターを取るさまざまなコマンドから除外するファイルのリストを作成しようとしていますGet-ChildItem

私が扱っているファイルはさまざまなプロジェクトに属し、特定のプロジェクト A の場合、ファイルprojA.1、などのように連続したページ番号を表します。ページ番号の 1 つのリスト(ファイルではない)projA.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からの対応する拡張子を持つファイル名です」というコンパクトな表記法はあります$pageExclusionsか?

または、さらに良いことに、両方を除外パラメーターに直接渡す方法があり、それが解釈されて$sourceExclusions.

4

1 に答える 1

1

こんなことを考えていませんか?

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

projA.1これにより、などが除外さprojB.1れます。それでも必要な場合は、ファイルの計算のみを返しprojA.*projB.*このように拡張できます

Get-ChildItem -Exclude ($pageExclusions | % { "$sourceProject.$_","$destProject.$_" }) | ? { $_.Name -match "$sourceProject\.|$destProject\." }
于 2013-11-05T21:31:02.460 に答える