Só estou olhando para ver se alguém sabe uma maneira de encurtar essa linha do PowerShell:
gci -Recurse -path $temp | ? {(".jpg",".png" -eq $_.extension -and $_ -match 'this' -and $_ -match "that")} | mi -Destination ($Images) -Force
A linha está neste código:
$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
O script deve procurar em uma pasta ($Temp), encontrar qualquer arquivo com a extensão .jpgou.png, E que têmambosas palavras "isto" e "aquilo" no nome do arquivo. Se encontrar uma correspondência, move o arquivo para a pasta de destino ($Imagens)
Portanto, se houver um arquivo em "F:\Temp-Images" chamado "this-that.png", ele será movido para "F:\Images\"
Sou novo no PowerShell, então juntei o código acima por meio de pesquisas no Google. Não sei se minha sintaxe é ótima ou não, mas está funcionando para mim. Só estou me perguntando se existe uma maneira de encurtar o código. Por exemplo, existe uma maneira de encurtar isso?:
-and $_ -match 'this' -and $_ -match "that"
Obrigado!
Responder1
Operar a descoberto o máximo possível é enigmático ;-)
$Temp = "F:\Temp-Images\"
$Images = "F:\Images\"
ls $Temp -R -I *.jpg,*.png|?{$_.Name -match 'this.*that|that.*this'}|mi -D ($Images) -Fo
Para testar eu acrescentaria -WhatIf
ou -Confirm
ao Move-Item