この Powershell 行を短くする方法はありますか? (省略形)

この Powershell 行を短くする方法はありますか? (省略形)

この PowerShell 行を短くする方法を誰かが知っているかどうかを確認したいだけです:

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

このコード内の行は次のとおりです:

$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

このスクリプトは、フォルダ($Temp)内を検索し、拡張子が.jpgのファイルを検索することを目的としています。または.png、そして両方ファイル名に「this」と「that」という単語が含まれているかどうかを確認します。一致するものが見つかった場合は、ファイルを宛先フォルダ ($Images) に移動します。

したがって、「F:\Temp-Images」に「this-that.png」という名前のファイルがある場合、そのファイルは「F:\Images\」に移動されます。

私は PowerShell を初めて使うので、Google 検索で上記のコードをまとめました。私の構文が優れているかどうかはわかりませんが、私にとってはうまく機能しています。コードを短くする方法があるかどうか知りたいだけです。たとえば、これを短くする方法はありますか?:

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

ありがとう!

答え1

できるだけショートすると不可解になります ;-)

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

テストするにはMove-Itemに追加-WhatIf-Confirmます

関連情報