私が持っているもの
次の作業コードは、スクリプトが配置されているすべてのサブフォルダーからすべてのファイルを一覧表示します。
特定のファイル タイプのみが含まれ、特定の 1 つのフォルダーからすべてのファイルが除外されます。ここまでは順調ですね
$fileInclude = @("*.txt", "*.hgr", "*.dat")
$folderExclude = "C:\folder2"
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
gci $scriptPath -recurse -include $fileFilter | Where {$_.FullName -notlike "$folderExclude*"}
私のテストのファイル構造は次のとおりでした
C:.
│ Myscript.ps1
│
├───folder1
│ │ file1.dat
│ │ file1.hgr
│ │ file1.txt
│ │
│ └───folder3
│ file3.dat
│ file3.hgr
│ file3.txt
│
└───folder2
file3.dat
file3.hgr
file3.txt
私が欲しいもの
今、私は2行目を置き換えたい
$folderExclude = "C:\folder2"
配列で。その後、そこには何十ものパスがあります。
$folderExclude = @(
"C:\folder2",
"C:\folder1\folder3"
)
-notlike
文字列の配列ではなく文字列を想定しているため、明らかにこれは機能しません。
これを実装する方法が頭に浮かびません。for-each ループが必要だと思いますか?