Страница 14 из 16

Добавлено: Ср фев 17, 2016 11:44
Flasher
Mailk писал(а):Впринципе очень интересен
Кто?
Mailk писал(а):но нужно вписывать в него данные, те что показывает хотя бы проводник в свойствах файла
Куда - в него?

Lev
На тот момент не качалось.
Доработать плаг нет желания? Есть ещё необходимость не писать Content = при наличии возвращённого значения из процедуры/функции. И ещё было бы крайне полезно добавить возможность взаимодействия плагина с сохранённым в сборке интерпретатором, а не из system32. Ключик в ini c поддержкой переменной среды не помешал бы.

Добавлено: Ср фев 17, 2016 16:56
Lev
Пока доработки плагина на длительной паузе. Только todo иногда дополняю.
Что за интерпретатор в сборке? wscript/cscript.exe? Есть машины без них?
Что за переменные среды? %TEMP%, %PATH% или ещё чего-то?

Добавлено: Ср фев 17, 2016 17:05
Flasher
Lev писал(а):wscript/cscript.exe? Есть машины без них?
Да, а какой же ещё? Дело не в "без них", а в необходимости подключать сторонние компонеты без прямой реги.
Переменная - %COMMANDER_PATH% (для указанного ключа).

Добавлено: Ср фев 17, 2016 20:52
Mailk
Flasher писал(а):
Mailk писал(а):спасибо !
Есть возможность временно перевести винду в английскую локаль (можно точку восстановления сделать)? Хотел бы список (не картинку) всех необходимых полей с возвращаемыми данными в свойствах этих файлов увидеть. Заодно стоит проверить данный скрипт на предмет полезности данных SW-файлов.
Вот этот скрипт. Я про него.

Добавлено: Ср фев 17, 2016 20:57
Flasher
В приведённой цитате нетрудно обнаружить знак вопроса и пожелание до указания на скрипт (никакой это не плагин).
Если скрипт никаких требуемых данных не приводит, то чем он может быть интересен? Ничем.

Помощь в скрипте и плагине

Добавлено: Ср фев 24, 2016 18:20
Mailk
Нужен инженерный документо-оборот что то типа PLM/PDM система.
Смысл в том чтобы выводить "коментарии" в колонке и через разные
файлы (обозначение.ion, наименование.ion, класификатор .ion). ТИП
Фаила о котором заносится коментарии значении не имеет. то есть
коментарии разные в разных файлах ion об одном файле. Пластина.dwg и о нем "коментарии" в файлах обозначение.ion, наименование.ion, класификатор.ion ....ion
и они содержат разную инфу по одному этому файлу которая отдельно выводится и сортируется. ну как в базе об файле разные значения хранятся. только тут в разных об одном..
Я испраил скрипт выводит "грин" но не дает в столбце.. понимаю что непреднозначен, можно поправить ?!!! Помогите...
Показать

Код: Выделить всё

'==========================================================================================
' Массовое Добавление\Удаление\Замена комментария (descript.ion), переданного параметром
'
' В качестве параметров указать:
' %L "%Pdescript.ion" {Комментарий} {Режим работы с комментарием} {Режим места комментария}
' Если в качестве комментария передать "", то для комментария будет использоваться
'   содержимое буфера обмена
' Режим работы с комментарием:
' 1 - Добавление
' 2 - Удаление
' 3 - Инверсия
' Режим места комментария (можно не указывать, по умолчанию - 1):
' 1 - Начало
' 2 - Конец
' 3 - Полностью
' Пример параметров для добавления комментария "####" в начало:
' %L "%Color.ion" "green" 1 1
'==========================================================================================
Option Explicit

If WScript.Arguments.Count < 4  Then
  MsgBox "Неправильно указаны параметры", _
         vbOKOnly + vbExclamation, _
         "Работа с комментариями"
  WScript.Quit
End If
If WScript.Arguments(3) < 1 Or WScript.Arguments(3) > 3 Then
  MsgBox "Неправильно указан режим работы с комментарием", _
         vbOKOnly + vbExclamation, _
         "Работа с комментариями"
  WScript.Quit
End If
Dim Mode2
If WScript.Arguments.Count < 5  Then
  Mode2 = 1
Else
  Mode2 = WScript.Arguments(4)
End If
If Mode2 < 1 Or Mode2 > 3 Then
  MsgBox "Неправильно указан режим места комментария", _
         vbOKOnly + vbExclamation, _
         "Работа с комментариями"
  WScript.Quit
End If
Dim CommLabel
CommLabel = WScript.Arguments(2)
If CommLabel = "" Then
  Dim TCS
  Set TCS   = CreateObject("TCScript.Helper   	")
  CommLabel = TCS.GetTextFromClip
  Set TCS   = Nothing
  If CommLabel = "" Then
    MsgBox "Не определен комментарий", _
           vbOKOnly + vbExclamation, _
           "Работа с комментариями"
    WScript.Quit
  End If
  CommLabel = Replace(CommLabel, vbNewLine, " ")
  CommLabel = Replace(CommLabel, Chr(10),   " ")
  CommLabel = Replace(CommLabel, Chr(13),   " ")
End If

Dim FSO, oTextFile, OTF, oCommFile
Dim AllText, FileName, CommFile, BegFile, BegFileComm, EndFileComm
Dim Mode1, CompareComm, FindComm, LenC
Set FSO  = CreateObject("Scripting.FileSystemObject")
CommFile = WScript.Arguments(1)
Mode1    = WScript.Arguments(3)
LenC     = Len(CommLabel)

If FSO.FileExists(CommFile) Then
  Set oTextFile = FSO.OpenTextFile(CommFile, 1)
  On Error Resume Next 'Игнорируем ошибку, если файл пустой
    AllText = oTextFile.ReadAll
  On Error GoTo 0
  oTextFile.Close
Else
  On Error Resume Next
  Set oTextFile = FSO.CreateTextFile(CommFile)
  If Err.Number = 0 Then
    oTextFile.Close
    Set oCommFile = FSO.GetFile(CommFile)
    oCommFile.Attributes = oCommFile.Attributes Or 2 'Hidden
    Set oCommFile = Nothing
    AllText = ""
  Else
    MsgBox "Создание " & CommFile & " невозможно из-за ошибки:" & vbNewLine & Err.Description, _
           vbOKOnly + vbCritical, _
           "Работа с комментариями"
    Err.Clear
    Set oTextFile = Nothing
    Set FSO       = Nothing
    WScript.Quit
  End If
End If

Set OTF = FSO.OpenTextFile(WScript.Arguments(0), 1)
Do While Not OTF.AtEndOfStream
  FileName = OTF.ReadLine
  If FSO.FileExists(FileName) Then
    FileName = FSO.GetFile(FileName).Name
  Else
    FileName = FSO.GetFolder(FileName).Name
  End If
  If InStr(1, FileName, " ", 1) > 0 Then
    FileName = """" & FileName & """"
  End If
  BegFile = InStr(1, vbNewLine & AllText, vbNewLine & FileName & " ", 1)
  If BegFile > 0 Then 'Есть какой-то комментарий для текущего файла
    BegFileComm = BegFile + Len(FileName) + 1 'Позиция начала комментария
    EndFileComm = InStr(BegFileComm, AllText & vbNewLine, vbNewLine, 1) 'Конец комментария + 1
    If EndFileComm - BegFileComm < LenC Then 'Существующий комм. не равен указанному
      FindComm = 0
    Else 'Поверяем дальше
      CompareComm = Mid(AllText, BegFileComm, EndFileComm - BegFileComm)
      If StrComp(CompareComm, CommLabel, 1) = 0 Then 'Существующий комм. = указанному
        FindComm = 2
      Else
        Select Case Mode2
        Case 1 'Начало
          If InStr(1, Left(CompareComm, LenC), CommLabel, 1) > 0 Then
            FindComm = 1
          Else
            FindComm = 0
          End If
        Case 2 'Конец
          If InStr(1, Right(CompareComm, LenC), CommLabel, 1) > 0 Then
            FindComm = 1
          Else
            FindComm = 0
          End If
        Case 3 'Полностью
          FindComm = 0
        End Select
      End If
    End If
    If FindComm = 0 Then 'Существующий комм. не равен указанному
      If Mode1 = 1 Or Mode1 = 3 Then 'Добавляем комментарий
        Select Case Mode2
        Case 1 'Начало
          AllText = Left(AllText, BegFileComm - 1) & CommLabel & " " & Mid(AllText, BegFileComm)
        Case 2 'Конец
          AllText = Left(AllText, EndFileComm - 1) & " " & CommLabel & Mid(AllText, EndFileComm)
        Case 3 'Полностью
          AllText = Left(AllText, BegFileComm - 1) & CommLabel & Mid(AllText, EndFileComm)
        End Select
      End If
      If Mode1 = 2 Or Mode2 = 3 Then 'Удаление комментария полностью
        AllText = DelLine(AllText, BegFile, EndFileComm)
      End If
    ElseIf FindComm = 1 Then 'Указанный комментарий есть
      If Mode1 = 2 Or Mode1 = 3 Then 'Удаляем комментарий
        Select Case Mode2
        Case 1 'Начало
          AllText = Left(AllText, BegFileComm - 1) & Mid(AllText, BegFileComm + LenC + 1)
        Case 2 'Конец
          AllText = Left(AllText, EndFileComm - LenC - 2) & Mid(AllText, EndFileComm)
        Case 3 'Полностью
          AllText = DelLine(AllText, BegFile, EndFileComm)
        End Select
      End If
      If Mode1 = 1 Or Mode2 = 3 Then 'Добавление комментария полностью
        AllText = Left(AllText, BegFileComm - 1) & CommLabel & Mid(AllText, EndFileComm)
      End If
    Else 'FindComm = 2 - Существующий комментарий равен указанному
      If Mode1 = 2 Or Mode1 = 3 Then 'Удаляем комментарий
        AllText = DelLine(AllText, BegFile, EndFileComm)
      End If
    End If
    ' Обработаем после удаления
    If Mode1 = 2 Or (Mode1 = 3 And (FindComm = 1 Or FindComm = 2)) Then
      'Удаление лишних пробелов
      If Instr(BegFile, AllText, FileName & "  ", 1) > 0 Then
        AllText = Left(AllText, BegFileComm - 2) & Mid(AllText, BegFileComm)
      End If
      'Удаление пустых комментариев
      If Instr(BegFile, AllText & vbNewLine, FileName & " " & vbNewLine) > 0 Then
        AllText = Left(AllText, BegFile - 1) & Mid(AllText, BegFile + Len(FileName & " " & vbNewLine))
      End If
      'Удаление лишних концевых строк
      If Right(AllText, Len(vbNewLine)) = vbNewLine Then
        AllText = Left(AllText, Len(AllText) - Len(vbNewLine))
      End If
      'Повторим, на всякий случай
      If Right(AllText, Len(vbNewLine)) = vbNewLine Then
        AllText = Left(AllText, Len(AllText) - Len(vbNewLine))
      End If
      If Len(AllText) = 0 Then
        FSO.DeleteFile(CommFile)
      End If
    End If
    If Len(AllText) > 0 Then
      On Error Resume Next
      Set oTextFile = FSO.OpenTextFile(CommFile, 2)
      If Err.Number = 0 Then
        oTextFile.Write AllText
        oTextFile.Close
      Else
        MsgBox "Запись в " & CommFile & " невозможна из-за ошибки:" & vbNewLine & Err.Description, _
               vbOKOnly + vbCritical, _
               "Работа с комментариями"
        Err.Clear
        Exit Do
      End If
      On Error GoTo 0
    End If
  Else 'Нет комментариев для файла
    If Mode1 = 1 Or Mode1 = 3 Then 'Добавляем комментарий
      On Error Resume Next
      Set oTextFile = FSO.OpenTextFile(CommFile, 8, 2)
      If Err.Number = 0 Then
        If (Right(AllText, Len(vbNewLine)) <> vbNewLine) And (AllText <> "") Then
          oTextFile.WriteLine
          AllText = AllText & vbNewLine
        End If
        oTextFile.Write FileName & " " & CommLabel
        oTextFile.Close
        AllText = AllText & FileName & " " & CommLabel
      Else
        MsgBox "Запись в " & CommFile & " невозможна из-за ошибки:" & vbNewLine & Err.Description, _
               vbOKOnly + vbCritical, _
               "Работа с комментариями"
        Err.Clear
        Exit Do
      End If
      On Error GoTo 0
    End If
  End If
Loop

OTF.Close
Set oTextFile = Nothing
Set oCommFile = Nothing
Set OTF       = Nothing
Set FSO       = Nothing
WScript.Quit

Function DelLine(FullText, BegLine, EndLine)
  If BegLine > Len(vbNewLine) Then
    DelLine = Left(FullText, BegLine - 1 - Len(vbNewLine)) & Mid(FullText, EndLine)
  ElseIf EndLine - 1 + Len(vbNewLine) <= Len(FullText) Then
    DelLine = Left(FullText, BegLine - 1) & Mid(FullText, EndLine + Len(vbNewLine))
  Else
    DelLine = ""
  End If
End Function

Добавлено: Ср фев 24, 2016 18:59
Avada
Mailk
Коды такого размера надо убирать под спойлеры.

Добавлено: Ср фев 24, 2016 19:41
Flasher
Да этот скрипт (1, 2, 3) вообще сюда не надо выкладывать. Править его под SCP - глупость.
Да и SCP тут не нужен по сути. Есть tc|Комментарий|Pег.выраж.
Хотя нет, я с покраской спутал, тут же нет шаблонов, и строки типа [=tc.Комментарий.Рег.выраж:...] тут не поддерживаются.

Добавлено: Ср фев 24, 2016 21:35
Mailk
А можно реализовать информация об одном файле в нескольких разных файлах и чтоб в колонки сортировать? Вторая есть проблема в Script.WDX постоянно падает при большом количестве файлов! очень раздрожвет. Может есть каой то вариант по другому? Без коментариев в в ТХТ или другой формат? просто смысл простой вводить паетно данные о файле в разные файлы с разными названиями.. и желательно потом поиск и тд.

Добавлено: Ср фев 24, 2016 23:34
Flasher
Можно и без файлов:
В NTFS_diz.ini

Код: Выделить всё

[Options]
KeepTime=0

[Streams]
0=Название
1=Назначение
2=Тип
..
9=Другая инф-я
Перезапуск ТС, присваивание через cm_SetAttrib и вывод в колонки.

Спасибо за идею !!!

Добавлено: Пт фев 26, 2016 13:05
Mailk
Да как то не ожидал что проще не куда ! Очень порадовало. Простота и совместимость с другими WDX, плюс возможность создавать шаблоны для внесения изменений !
Total commander PDM / PLM удобней нет и врятли будет !
Изображение

Добавлено: Пт май 13, 2016 14:59
Skif_off
Появился новый плагин WinScript Advanced Content Plugin (x86\x64), функционал аналогичен, автор заверяет о совместимости сo скриптами для Script Content Plugin.

P.S. Забавное совпадение, буквально неделю назад общался с Lev на предмет вероятности появления х64-версии...

Добавлено: Пт май 13, 2016 15:09
Flasher
* Unlimited number of simultaneously working scripts in one group of columns;
* Stable and fast

Код: Выделить всё

[Script]
ActiveScripts=CheckEncoding|Signature|MyScript
Ю-ху-ху! Не прошло и 88 лет. )))

Skif_off, спасибо за новость!

Добавлено: Ср май 18, 2016 22:36
Gentoo69
Skif_off писал(а):Появился новый плагин WinScript Advanced Content Plugin (x86\x64), функционал аналогичен, автор заверяет о совместимости сo скриптами для Script Content Plugin.
Создал тему здесь.

Добавлено: Вт май 31, 2016 18:53
Lev
Очень хорошо! :)
А то я пару-тройку недель назад заморочился над доделками своего плагина и застрял на поисках компилятора под x64, а теперь и возиться не надо.