1

現在、この行を使用して、特定のパス(およびそれ以降)のすべてのファイルを収集しています

$files = Get-ChildItem -Path $loc -Recurse | ? { !$_.PSIsContainer }

ただし、現在iveは、すべての「docx」ファイルと「xlsx」ファイル、および「scripts」という名前のフォルダーとそのコンテンツを除外しながら、このリストを生成するように求めています。

これらのファイル拡張子とディレクトリ名をtxtファイルから配列に読み込み、その配列を使用したいと思います。

また、これらのファイルで実行する機能には十分な時間がかかるため、速度も重要です。このプロセスでスクリプト10の速度を落とす必要はありません(少し問題ありません)。

入力ありがとうございます

失敗した試み:

gi -path H:\* -exclude $xfolders | gci -recurse -exclude $xfiles | where-object { -not $_.PSIsContainer }

これは機能すると思いますが、H:\ドライブのルートでのみフォルダの除外が行われます

4

4 に答える 4

3

このようなもの?$loc無視するフォルダ名の1つが含まれている場合に備えて、実際のパスのみ($ locからのパス)を比較しています。

$loc = "C:\tools\scripts\myscripts\"
$files = Get-ChildItem -Path $loc -Recurse -Exclude *.docx, *.xlsx | ? { !$_.PSIsContainer -and !($_.FullName.Replace($loc,"") -like "*scripts\*") }

複数のフォルダ(これは醜いです):

#Don't include "\" at the end of $loc - it will stop the script from matching first-level subfolders
$loc = "C:\tools\scripts\myscripts"
$ignore = @("testfolder1","testfolder2");

$files = Get-ChildItem -Path $loc -Recurse -Exclude *.docx, *.xlsx | ? { !$_.PSIsContainer } | % { $relative = $_.FullName.Replace($loc,""); $nomatch = $true; foreach ($folder in $ignore) { if($relative -like "*\$folder\*") { $nomatch = $false } }; if ($nomatch) { $_ } }
于 2013-01-18T19:29:13.263 に答える
0

私が質問を理解すれば、あなたは正しい道を進んでいます。*.docxファイルと*.xlsxファイルを除外するには、それらをフィルター文字列の配列として-excludeparmに提供する必要があります。

$files = Get-ChildItem -Path $loc -Recurse -Exclude @('*.docx','*.xlsx') | ? { !$_.PSIsContainer }
于 2013-01-18T19:29:50.160 に答える
0

私もこれをやろうとしていましたが、グレイマーの答えはうまくいきませんでした(あまりにも複雑すぎます)ので、私は次のことを思いつきました。

$ignore = @("*testfolder1*","*testfolder2*");
$directories = gci $loc -Exclude $ignore | ? { $_.PSIsContainer } | sort CreationTime -desc
于 2013-11-13T17:18:51.790 に答える
0

PowerShellのバージョン3では、次のようにGet-ChildItemにファイルのみを表示するように指示できます。

PS> $files = Get-ChildItem -File -Recurse -Path $loc 

特定のファイル名(abc * .txtなど)のみを収集する場合は、フィルターを使用することもできます。

PS> $files = Get-ChildItem -File -Recurse -Path $loc -Filter abc*.txt
于 2017-08-22T05:18:22.887 に答える