Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Старожил


Сообщения: 169
Благодарности: 4

Профиль | Отправить PM | Цитировать


Спасибо вам уважаемый Kazun все заработало

Вот последняя версия скрипта - выкладываю все в одной форме, может пригодится кому
Код: Выделить весь код
#Чтобы скрипт работал нужно скачать и установить модуль ( Image-module powershell ), кратко называется image
#подгружаем установленный модуль командой import-modul
#ДЛЯ СОРТИРОВКИ МОЖНО ИСПОЛЬЗОВАТЬ следующие конструкции Where {($_.Keywords -like "*всп*") -or ($_.Keywords -like "*tot*")}
# Where {($_.Keywords -eq "робот") -or ($_.Keywords -like "total")}
# -or ($_.StarRating -eq "4")}
#если скрипт файлы не переносит значит повторно выполняется команда import-module, а она должна выполняться только один раз после запуска powershell
#чтобы работать с файлами в названии которых присутствуют символы [  или  ] используем второй вариат скрипта и измененный файл Get-Image.ps1 из комплекта Image-module powershell
#в файле Get-Image.ps1 были исправлены следующие строки
# [ValidateScript({Test-path -LiteralPath $_ })][string]$Path)
#
# и
#
# foreach ($file in (resolve-path -LiteralPath $path) ) {

<#
# Вариант 1
import-module image
$Path="e:\test\in"
$dest="e:\test\out"
Get-ChildItem $path -include *.jpg -Recurse | Get-Exif | Where {($_.Keywords -like "*ро*") -or ($_.Keywords -like "*recall*")} | Foreach {Get-Item $_.path | copy-Item -Destination {
	$folder = "$dest"
	md $folder -Force | Out-Null
	$fpath = Join-Path $folder $_.Name
	$i = 1
	while($true) {
		if (Test-Path $fpath) {
			$fpath = "{0}\{1}_{2}{3}" -f $folder,$_.basename,$i,$_.extension
			$i++
		}
		else {
			$fpath
			break
		}
	}
}
}
#>

# Вариант 2
import-module image
$Path="e:\test\in"
$dest="e:\test\out"
Get-ChildItem $path -include *.jpg  -Recurse | Get-Exif | Where {($_.Keywords -like "*стоя*") -or ($_.Keywords -like "*роб*")} | Foreach {Get-Item -LiteralPath $_.path | copy-Item -Destination {
		$folder = "$dest"
		md $folder -Force | Out-Null
		$fpath = Join-Path $folder $_.Name
		$i = 1
		while($true) {
			if (Test-Path -LiteralPath $fpath) {
				$fpath = "{0}\{1}_{2}{3}" -f $folder,$_.basename,$i,$_.extension
				$i++
			}
			else {
				$fpath
				break
			}
		}
	}
}

Отправлено: 20:57, 31-10-2012 | #34