Qualquer maneira de encurtar esta linha Powershell? (forma abreviada)

0

Apenas olhando para ver se alguém sabe de uma maneira de encurtar esta linha de 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 destina-se a procurar em uma pasta ($ Temp), encontrar quaisquer arquivos com a extensão .jpg ou .png, E que tenham ambos as palavras " este "e" que "no nome do arquivo. Se encontrar uma correspondência, ela moverá o arquivo para a pasta de destino ($ Images)

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 eu 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. Eu só estou querendo saber se há uma maneira de encurtar o código. Por exemplo, existe uma maneira de encurtar isso?:

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

Obrigado!

    
por D. Hill 31.08.2017 / 23:41

1 resposta

0

Encurtar 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 adicionaria -WhatIf ou -Confirm ao item de movimento

    
por 01.09.2017 / 00:12

Tags