Abrufen von Filter- oder -Include-Werten aus der TXT-Datei

Sep 18 2020

Ich habe eine txt-Datei mit Dateinamen (dh 01234.tif), die ich zum Filtern eines Cmdlets Get-ChildItem verwenden möchte. Ich tat

$filenames = Get-Content filenames.txt

(auch versucht mit | Out-String)

und dann

Get-ChildItem . -Include $filenames | ForEach {if (!(Test-Path -Path ./jpeg/$_.Basename+".jpg")) {some imagemagick processing}}

aber es macht nichts. Lustiger Teil ist, dass es zum Ausschließen funktioniert, da

Get-ChildItem . -Exclude $filenames > exclude.txt

schreibt die erwartete Anzahl von Zeilen. Was fehlt mir hier?

Get-Content filenames.txt | ForEach (path test) {imagemagick}

wird ausgeführt, kopiert jedoch alle Elemente, sodass entweder die Pfadprüfung oder Get-Content nicht wie erwartet funktioniert.

Antworten

1 mklement0 Sep 18 2020 at 05:10

Vielleicht überraschend, -Includewird nur auf die angewandten Blattkomponenten des (möglicherweise Wildcard-erweitert) Eingangspfad (e) (es sei denn , -Recurseebenfalls angegeben ist ), nicht seine Kinder - siehe dieses Problem GitHub .

Verwenden Sie daher Get-Item *( Get-ChildItemwürde auch funktionieren, ist aber nicht erforderlich):

Get-Item * -Include (Get-Content filenames.txt)

Hinzufügen, -Forceum auch versteckte Elemente einzuschließen.