Abrufen von Filter- oder -Include-Werten aus der TXT-Datei
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
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.