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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Вопрос как работать с тегами/ключевыми словами в файлах jpg ?

Ответить
Настройки темы
PowerShell - [решено] Вопрос как работать с тегами/ключевыми словами в файлах jpg ?

Старожил


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

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


Здравствуйте,
Подскажите пожалуйста,как с помощью Powershell работать с тегами/ключевыми словами в файлах jpg ?
Если возможно приведите пример.

Отправлено: 21:30, 28-10-2012

 

Ветеран


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

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


В скрипте Get-Image.ps1 поправьте строчку:

[ValidateScript({Test-path -LiteralPath $_ })][string]$Path)

и

foreach ($file in (resolve-path -LiteralPath $path) ) {
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:51, 31-10-2012 | #31



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


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

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


Не помогло, ошибки перестал выдавать, а файл [sun].jpg не переносит

Отправлено: 17:42, 31-10-2012 | #32


Ветеран


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

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


Код: Выделить весь код
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
			}
		}
	}
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:41, 31-10-2012 | #33


Старожил


Сообщения: 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Вопрос как работать с тегами/ключевыми словами в файлах jpg ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
DevCon’12: ключевыми докладчиками конференции станут Скотт Хансельман и Йонас Перссон OSZone News Новости и события Microsoft 0 27-01-2012 20:30
C/C++ - Помогите пожалуйста с русскими словами в C++. dakishi Программирование и базы данных 1 20-05-2010 10:21
C/C++ - Помогите пожалуйста решить проблему со словами. dakishi Программирование и базы данных 17 19-05-2010 21:50
Веб-технологии и мобильная платформа станут ключевыми темами конференции ReMIX10 OSZone News Новости и события Microsoft 0 17-05-2010 17:30
Графика - Ищу графический просмотрщик который умеет работать с тегами dionisys Программное обеспечение Windows 3 27-01-2010 11:50




 
Переход