Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Добавить (изменить) "свойства" файла на вкладке "Особые" (http://forum.oszone.net/showthread.php?t=233561)

KlimTV 26-04-2012 16:44 1906268

Добавить (изменить) "свойства" файла на вкладке "Особые"
 
Добрый день.

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

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

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

KlimTV 23-05-2012 11:35 1920958

Всем еще раз добрый день.
Вопрос удалось решить, хотя немного изменилось задание. Скрипт работает следующим образом: пользователь выбирает файл(ы) для назначения предопределенного свойства. Для работы необходимы: 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



Время: 23:05.

Время: 23:05.
© OSzone.net 2001-