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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Добавить (изменить) "свойства" файла на вкладке "Особые"

Ответить
Настройки темы
VBS/WSH/JS - [решено] Добавить (изменить) "свойства" файла на вкладке "Особые"

Новый участник


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

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


Добрый день.

Есть такая задача: Есть папка, в ней лежат файлы SolidWorks - модели сборок и деталей. Необходимо для каждой модели добавить свойство: Имя свойства "Раздел СП", тип данных "Строка", значение "Прочие изделия"(для примера, назначается в зависимости от...).
Без открытия документа приложением можно зайти в свойства файла и на вкладке особые добавить необходимую информацию. Но для каждого отдельного документа повторять эти действия устанет рука

Вопрос следующий - есть ли возможность осуществлять запись таких свойств с помощью объектов Windows Script Host? Сталкивался кто-нибудь с подобной задачей ?

Выбрать папку и осуществить в ней перебор файлов проблем не составляет, но вот обращение к этим свойствам файла...

Отправлено: 16:44, 26-04-2012

 

Новый участник


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

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


Всем еще раз добрый день.
Вопрос удалось решить, хотя немного изменилось задание. Скрипт работает следующим образом: пользователь выбирает файл(ы) для назначения предопределенного свойства. Для работы необходимы: Microsoft Developer Support OLE File Property Reader 2.1 Sample - для обращения к "особым свойствам" файла, а так же лицензирование класса MSComDlg.CommonDialog (нашел тут http://forum.ru-board.com/topic.cgi?...1491&start=124 ) - для возможности выбора файлов через проводник windows
Вот пример кода, если кому-нибудь поможет в будущем, буду рад.
Код: Выделить весь код
'VBS
Set objShellApp = CreateObject("Shell.Application")        ' создаем объект оболочки
Set FSO = CreateObject("Scripting.FileSystemObject")    ' создаем объект файловой системы
FileChangedCount = 0                                                  ' Количество обработанных файлов

Main                                                                           ' Поиск файлов

Sub Main    '""""""""""""""""" Поиск файлов
On error Resume Next                                                                        ' Если файлы открыты приложением, будут пропущены
Set OpenDialog = CreateObject("MSComDlg.CommonDialog")               ' Microsoft Common Dialog Control
With OpenDialog
    .DialogTitle = "Откройте нужный Вам файл(ы)"
    .InitDir = "C:\"
    .Filter = "Модели Solidworks (*.sldprt,*.sldasm)|*.sldprt;*.sldasm"   ' Расширения файлов
    .FilterIndex = 1 
    .Flags = 2621952
    .MaxFileSize =32000
    .ShowOpen
    Filename = .Filename
End With

If (Len(OpenDialog.FileName)= 0) Then
    msgbox "Файлы не выбраны!"
    Exit Sub
End If

files = Split(OpenDialog.Filename, vbNullChar)
count_files = UBound(files)
If count_files > 0 Then
    path = files(0) + "\"                                                                                  ' в ХР работает этот вариант   path = files(0), в W7 почему то в окончании \ отсутствует
    For i = 1 To count_files
        PropertySearch path + files(i)                                                                ' Если выбрано несколько файлов
    Next
Else
    PropertySearch path + files(0)                                                                   ' Если выбран один файл
End If
Msgbox "Выполнено." &chr(13)& "Количество обработанных файлов: "& FileChangedCount, vbInformation
End Sub

Sub PropertySearch (FilePath)      '""""""""""""""""" поиск свойств файла
'msgbox "FilePath = " & FilePath
Set Cprop = CreateObject("DSOFile.OleDocumentProperties")                         ' создаем объект подключения к свойствам файла
Cprop.Open FilePath, false                                                                            ' Открываем текущий файл
IsHere = ""                                                                                                  ' Наличие свойства Раздел СП, если останется "" то нету
if Cprop.CustomProperties.count > 0 then                                                      ' Если у файла есть свойства
 for iprop=0 to Cprop.CustomProperties.count-1                                             ' цикл по свойствам
 if Cprop.CustomProperties.item(iprop).Name = "Раздел СП" then                   ' если Раздел СП есть
  IsHere = 1                                                                                                ' делаем отметку
  Exit For
 End if
 Next
End if
If IsHere = "" then                                                                                       ' если Раздела СП нету
 AddCustomProperty Cprop                                                                            ' назначение свойств для файла
else
 AddCustomPropertyEx Cprop, iprop                                                               ' если есть
End if
Cprop.close                                                                                                ' закрываем файл
End Sub

Sub AddCustomProperty(Cprop)      '""""""""""""""""" назначение свойств для файла
key = "Раздел СП"                                                                                     ' Имя свойства
valueForKey = "Прочие изделия"                                                                ' Значение свойства
Cprop.CustomProperties.Add key, valueForKey                                             ' Добавляем новое свойство с
Cprop.Save                                                                                               ' Сохранить изменения
FileChangedCount = FileChangedCount + 1                                                  ' Инкрементация счетчика обработанных
End Sub

Sub AddCustomPropertyEx(Cprop,iprop)      '""""""""""""""""" назначение свойств для файла
valueForKey = "Прочие изделия"                                                                ' Значение свойства
Cprop.CustomProperties.Item(iprop).value = valueForKey                             ' изменяем свойство
Cprop.Save                                                                                               ' Сохранить изменения
FileChangedCount = FileChangedCount + 1                                                  ' Инкрементация счетчика обработанных
End Sub

'""""""""""""""""" Освобождаем память
Set objShellApp = Nothing
Set FSO = Nothing
Set Cprop = Nothing
Set OpenDialog = Nothing
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:35, 23-05-2012 | #2



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

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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Добавить (изменить) "свойства" файла на вкладке "Особые"

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - В меню "сервис" "свойства папки" не могу настроить скрытые файлы Antoni106 Microsoft Windows 2000/XP 1 15-12-2009 21:32
[решено] ошибка при отображении "свойства системы"-"общие" Dz_mikael Проект WinStyle 5 28-07-2009 20:46
VBS/WSH/JS - [решено] Как добавить "сложное" значение в "бинарный" параметр реестра с помощью WSH 13Demon Скриптовые языки администрирования Windows 1 10-02-2009 09:47
Интерфейс - [решено] Пропала строка "Свойства папки" из выпадающего меню "Сервис" панели задач Стальное сердце Microsoft Windows 2000/XP 1 28-09-2007 11:26
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход