Ich möchte nur sehen, ob jemand eine Möglichkeit kennt, diese Powershell-Zeile zu kürzen:
gci -Recurse -path $temp | ? {(".jpg",".png" -eq $_.extension -and $_ -match 'this' -and $_ -match "that")} | mi -Destination ($Images) -Force
Die Zeile steht in diesem Code:
$Temp = "F:\Temp-Images"
$Images = "F:\Images\"
gci -Recurse -path $Temp | ? {(".jpg",".png" -eq $_.extension -and $_ -match 'this' -and $_ -match "that")} | mi -Destination ($Images) -Force
Das Skript soll in einem Ordner ($Temp) nach allen Dateien mit der Erweiterung .jpg suchen.oder.png, UND das habenbeidedie Wörter "dies" und "das" im Dateinamen. Wenn eine Übereinstimmung gefunden wird, wird die Datei in den Zielordner ($Images) verschoben.
Wenn sich also eine Datei in "F:\Temp-Images" mit dem Namen "this-that.png" befindet, wird sie nach "F:\Images\" verschoben.
Ich bin neu bei PowerShell, also habe ich den obigen Code über Google-Suchen zusammengestückelt. Ich weiß nicht, ob meine Syntax gut ist oder nicht, aber für mich funktioniert sie. Ich frage mich nur, ob es eine Möglichkeit gibt, den Code zu kürzen. Gibt es zum Beispiel eine Möglichkeit, dies hier zu kürzen?:
-and $_ -match 'this' -and $_ -match "that"
Danke!
Antwort1
So viel wie möglich zu shorten wird kryptisch ;-)
$Temp = "F:\Temp-Images\"
$Images = "F:\Images\"
ls $Temp -R -I *.jpg,*.png|?{$_.Name -match 'this.*that|that.*this'}|mi -D ($Images) -Fo
Zum Testen würde ich anhängen -WhatIf
oder -Confirm
Move-Item