Просто хочу узнать, знает ли кто-нибудь способ сократить эту строку 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, И которые имеютобаслова "это" и "то" в имени файла. Если он находит совпадение, он перемещает файл в папку назначения ($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
Для проверки я бы добавил -WhatIf
или -Confirm
к Move-Item