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!
powershell
D. Hill
źródło
źródło
this
ithat
?Odpowiedzi:
Zwarcie, na ile to możliwe, staje się tajemnicze ;-)
Aby przetestować, dołączę
-WhatIf
lub-Confirm
przeniosę elementźródło
'this.*that|that.*this'
- Czy jest powtarzane w odwrotnej kolejności, ponieważ jest wrażliwe na kolejność słów?.*
pasuje do niczego pomiędzy.