Solo quiero ver si alguien conoce alguna forma de acortar esta línea de PowerShell:
gci -Recurse -path $temp | ? {(".jpg",".png" -eq $_.extension -and $_ -match 'this' -and $_ -match "that")} | mi -Destination ($Images) -Force
La línea está en este 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
El script está destinado a buscar en una carpeta ($Temp), encontrar cualquier archivo con la extensión .jpgo.png, Y que tienenamboslas palabras "esto" y "aquello" en el nombre del archivo. Si encuentra una coincidencia, mueve el archivo a la carpeta de destino ($Images)
Entonces, si hay un archivo en "F:\Temp-Images" llamado "this-that.png", se moverá a "F:\Images\".
Soy nuevo en PowerShell, así que compilé el código anterior mediante búsquedas en Google. No sé si mi sintaxis es buena o no, pero me funciona. Me pregunto si hay alguna manera de acortar el código. Por ejemplo, ¿hay alguna forma de acortarlo?:
-and $_ -match 'this' -and $_ -match "that"
¡Gracias!
Respuesta1
Acortar tanto como sea posible se vuelve críptico ;-)
$Temp = "F:\Temp-Images\"
$Images = "F:\Images\"
ls $Temp -R -I *.jpg,*.png|?{$_.Name -match 'this.*that|that.*this'}|mi -D ($Images) -Fo
Para probar, agregaría -WhatIf
o -Confirm
movería elemento