Просто посмотрим, знает ли кто-нибудь способ сократить эту строку 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 и AND, в словах которых есть как слова "this", так и "that". Если он находит совпадение, он перемещает файл в папку назначения ($ Images)

Поэтому, если в «F:\Temp-Images» есть файл с именем «this-that.png», он будет перемещен в «F:\Images\»

Я новичок в PowerShell, поэтому я собрал код выше с помощью поисков Google. Я не знаю, хороший ли у меня синтаксис, но он работает на меня. Мне просто интересно, есть ли способ сократить код. Например, есть ли способ сократить это?

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

Спасибо!

1 ответ1

0

Коротко говоря как можно больше получай загадочный ;-)

$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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .