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!


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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.