Jest jakiś sposób na skrócenie tej linii PowerShell? (stenografia)

0

Chciałem tylko sprawdzić, czy ktoś wie, jak skrócić tę linię PowerShell:

gci -Recurse -path $temp | ? {(".jpg",".png" -eq $_.extension -and $_ -match 'this' -and $_ -match "that")} | mi -Destination ($Images) -Force

Linia znajduje się w tym kodzie:

$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

Skrypt służy do wyszukiwania w folderze ($ Temp), znajdowania plików z rozszerzeniem .jpg lub .png ORAZ zawierających zarówno słowa „to”, jak i „tam” w nazwie pliku. Jeśli znajdzie dopasowanie, przenosi plik do folderu docelowego ($ Images)

Jeśli więc plik „F: \ Temp-Images” o nazwie „this-that.png” zostanie przeniesiony do „F: \ Images \”

Jestem nowy w PowerShell, więc poskładałem powyższy kod razem za pomocą wyszukiwań Google. Nie wiem, czy moja składnia jest świetna, czy nie, ale działa dla mnie. Zastanawiam się tylko, czy istnieje sposób na skrócenie kodu. Na przykład czy istnieje sposób, aby to skrócić ?:

-and $_ -match 'this' -and $_ -match "that"

Dzięki!

D. Hill
źródło
W której wersji programu PowerShell jest zamówienie thisi that?
LotPings

Odpowiedzi:

0

Zwarcie, na ile to możliwe, staje się tajemnicze ;-)

$Temp = "F:\Temp-Images\"
$Images = "F:\Images\"
ls $Temp -R -I *.jpg,*.png|?{$_.Name -match 'this.*that|that.*this'}|mi -D ($Images) -Fo

Aby przetestować, dołączę -WhatIflub -Confirmprzeniosę element

LotPings
źródło
Wow, to jest tajemnicze! :) Ale bardzo fajnie. Spróbowałem. Dzięki!! Pytanie tej części: 'this.*that|that.*this'- Czy jest powtarzane w odwrotnej kolejności, ponieważ jest wrażliwe na kolejność słów?
D. Hill
Jest to wyrażenie regularne (jak zawsze w przypadku -match) pionowy pasek tutaj oznacza, że ​​kolejność nie ma znaczenia, .*pasuje do niczego pomiędzy.
LotPings