Страница 2 из 7

Добавлено: Пт авг 25, 2006 09:40
Batya
fa1con
Я так понимаю плагин запускает скрипт FilesInList.vbs для каждого директории. Это довольно долго. Поэтому пользоваться я этим не буду.
Все верно. И пользоваться действительно надо по необходимости.
Чтоб избавиться от тормозов предлагаю переписать скрипты "добавления"/"удаления" так что б он дописывал/удалял в/из комментария выделенных файлов какую-то строчку ("№;%:% например). Тогда можно будет настроить выделения цветом по "комментарий содержит". Так намного быстрее и плагина не надо. Одно плохо – комменты поганятся.
В принципе, можно было бы сделать, если это кому-нибудь надо. И можно добавлять в начало или конец комментария что-нибудь более-менее красивое, например, ####. Тогда и коменты не будут поганиться.

Добавлено: Пт авг 25, 2006 10:31
A.N.T.
Batya, а с чем связано, то что цвет не сразу появляется(нужно перезайти в папку)?

Добавлено: Пт авг 25, 2006 10:40
Batya
A.N.T.
Не знаю.
У меня на левой панели сразу цвет менялся, а на правой приходилось перезаходить.

Добавлено: Пт авг 25, 2006 14:08
Batya
fa1con писал(а):Чтоб избавиться от тормозов предлагаю переписать скрипты "добавления"/"удаления" так что б он дописывал/удалял в/из комментария выделенных файлов какую-то строчку ("№;%:% например). Тогда можно будет настроить выделения цветом по "комментарий содержит". Так намного быстрее и плагина не надо. Одно плохо – комменты поганятся.
Ну что ж, написал.
Добавление в комментарий:

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

'==============================================================================
' Добавление в начало комментария (descript.ion) ####
'
' В качестве параметров указать:
' %L "%Pdescript.ion"
'==============================================================================
Option Explicit 

If WScript.Arguments.Count < 2  Then 
  MsgBox "Не указаны параметры - %L ""%Pdescript.ion""", _
         vbOKOnly + vbExclamation, _
         "Добавление #### в комментарий"
  WScript.Quit
End If

Dim FSO, oTextFile, AllText, OTF, FileName, CommFile, CommLabel, BegFile, BegFileComm
Set FSO   = CreateObject("Scripting.FileSystemObject")
Set OTF   = FSO.OpenTextFile(WScript.Arguments(0), 1)
CommFile  = WScript.Arguments(1)
CommLabel = "####"

AllText = ""
If FSO.FileExists(CommFile) Then
  Set oTextFile = FSO.OpenTextFile(CommFile, 1)
  On Error Resume Next 'Игнорируем ошибку, если файл пустой
    AllText = oTextFile.ReadAll
  On Error GoTo 0
  oTextFile.Close
End If

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
    If InStr(1, Mid(AllText, BegFileComm, Len(CommLabel)), CommLabel, 1) = 0 Then
      AllText = Left(AllText, BegFileComm - 1) & CommLabel & " " & Mid(AllText, BegFileComm)
      Set oTextFile = FSO.OpenTextFile(CommFile, 2)
      oTextFile.Write AllText
      oTextFile.Close
    End If
  Else
    Set oTextFile = FSO.OpenTextFile(CommFile, 8, 2)
    If Right(AllText, Len(vbNewLine)) <> vbNewLine Then
      oTextFile.WriteLine
      AllText = AllText & vbNewLine
    End If
    oTextFile.Write FileName & " " & CommLabel
    oTextFile.Close
    AllText = AllText & FileName & " " & CommLabel
  End If
Loop

OTF.Close
Set oTextFile = Nothing
Set OTF       = Nothing
Set FSO       = Nothing
WScript.Quit
Удаление из комментария:

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

'==============================================================================
' Удаление в начале комментария (descript.ion) ####
'
' В качестве параметров указать:
' %L "%Pdescript.ion"
'==============================================================================
Option Explicit 

If WScript.Arguments.Count < 2  Then 
  MsgBox "Не указаны параметры - %L ""%Pdescript.ion""", _
         vbOKOnly + vbExclamation, _
         "Удаление #### в комментарии"
  WScript.Quit
End If

Dim FSO, oTextFile, AllText, OTF, FileName, CommFile, CommLabel, BegFile, BegFileComm, EndFileComm
Set FSO   = CreateObject("Scripting.FileSystemObject")
Set OTF   = FSO.OpenTextFile(WScript.Arguments(0), 1)
CommFile  = WScript.Arguments(1)
CommLabel = "####"

AllText = ""
If FSO.FileExists(CommFile) Then
  Set oTextFile = FSO.OpenTextFile(CommFile, 1)
  On Error Resume Next 'Игнорируем ошибку, если файл пустой
    AllText = oTextFile.ReadAll
  On Error GoTo 0
  oTextFile.Close
End If

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
    If InStr(1, Mid(AllText, BegFileComm, Len(CommLabel)), CommLabel, 1) > 0 Then
      AllText = Left(AllText, BegFileComm - 1) & Mid(AllText, BegFileComm + Len(CommLabel))
      'Удаление лишних пробелов
      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
      Set oTextFile = FSO.OpenTextFile(CommFile, 2)
      oTextFile.Write AllText
      oTextFile.Close
    End If
  End If
Loop

OTF.Close
Set oTextFile = Nothing
Set OTF       = Nothing
Set FSO       = Nothing
WScript.Quit
Настройте шаблон для цвета - плагин "tc", "Комментарий", "содержит", "####".
У кого тачки слабые, сравните, пожалуйста, скорость работы через плагин ScriptContent и черех комментарии.

Добавлено: Пт авг 25, 2006 17:36
fa1con
Всё работает быстро. Ещё было бы прикольно запихнуть это в один скрипт и писать коментарий не в начало, а в конец. А так рулллез! Буду юзать.

Добавлено: Пт авг 25, 2006 17:43
Batya
fa1con
В один скрипт точно сливать не буду - смысла особого нет.
А помещать метку в конец комментария возможно. В понедельник покопаюсь.

Добавлено: Пт авг 25, 2006 17:56
A.N.T.
А мне больше с плагином нравится... Потому что выделяется не только файл, но и все предыдущие директории... :P

Добавлено: Пт авг 25, 2006 18:07
Batya
A.N.T. писал(а):А мне больше с плагином нравится... Потому что выделяется не только файл, но и все предыдущие директории...
Что значит "предыдущие"?
Комментарии к папкам также работают. Если у тебя ошибка при работе с папками, сохрани скрипты еще раз из поста выше - я там кое-что менял.

Добавлено: Пт авг 25, 2006 18:14
fa1con
Batya писал(а):fa1con
В один скрипт точно сливать не буду - смысла особого нет.
Как нет? Есть – один хоткей вместо двух.
Ещё можно удалять пустой descript.ion, как это делает Тотал.

Добавлено: Пт авг 25, 2006 18:21
A.N.T.
Что значит "предыдущие"?
Блин, не знаю какое слово бы подобрать , короче я помечаю файл, та директория в которой он находится, тоже "светится", -> директория, в которой находится "светящаяся директория" тоже светится....... :roll:

Добавлено: Пт авг 25, 2006 18:31
Batya
fa1con писал(а):Как нет? Есть – один хоткей вместо двух.
Э нет. Мне такой подход очень не нравится.
Например, если выделить часть файлов, для которых есть комментарий, и часть файлов, для которых нет комментария, и выполнить команду, что скрипт должен делать?
fa1con писал(а):Ещё можно удалять пустой descript.ion, как это делает Тотал.
Это можно.
A.N.T. писал(а):Блин, не знаю какое слово бы подобрать , короче я помечаю файл, та директория в которой он находится, тоже "светится", -> директория, в которой находится "светящаяся директория" тоже светится.......
Это как же у тебя так получилось? А descript.ion для родительских папок содержит комментарий ####? Если нет, то значит ты как-то хитро настроил шаблон. Проверь еще раз.

Добавлено: Пт авг 25, 2006 18:42
A.N.T.
А descript.ion для родительских папок содержит комментарий ####?
(родительские-точно :!: ). descript.ion'a вообще нет в родительских папках.
Шаблон правильно настроил... Разве когда я помечаю файл твоим скриптом, в родительских директориях должен тоже descript.ion создаваться? + у меня почему то descript.ion без атрибута "скрытый"...

Добавлено: Пт авг 25, 2006 18:46
Batya
A.N.T. писал(а):Разве когда я помечаю файл твоим скриптом, в родительских директориях должен тоже descript.ion создаваться?
Вот именно, что не должен. А раз нет descript.ion, то и подцвечиваться не должно. Значит ты шаблон все-таки неправильно настроил. Это уже не мой скрипт, это Тотал так работает по настроенному тобой шаблону.
A.N.T. писал(а):у меня почему то descript.ion не скрытым становится...
Ага, я уже видел. В понедельник исправлю.

Добавлено: Пт авг 25, 2006 19:01
A.N.T.
Никак не могу понять, твой скрипт должен подсвечивать родительские директории или нет? Было бы очень даже круто...Без плага можно было б юзать + файлы/папки сразу закрашивались...

Шаблон:
Плагин: tc
Свойство: Комментарий
Операция: содержит
Значение: ####

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

Метка_SearchFor=
Метка_SearchIn=
Метка_SearchText=
Метка_SearchFlags=0|000002000020|||||||||0000
Метка_plugin="tc.comment contains ####"

Добавлено: Пт авг 25, 2006 23:17
fa1con
Например, если выделить часть файлов, для которых есть комментарий, и часть файлов, для которых нет комментария, и выполнить команду, что скрипт должен делать?
Инвертировать. А-ля * для коммандеровского выделения. А хотя хрен его знает как удобнее. Для меня вроде было бы удобнее так. Хотя с другой стороны, если в каталоге куча файлов помечено и хочется с них всех эти метки снять, тогда лучше как сейчас сделано. Ещё, как вариант, можно выполнять действие для файла под курсором.