Q. У меня есть автоматически пронумерованые текстовые файлы (1.txt, 2.txt,…), в первой строке содержимого которых в кавычках содержится их настоящее имя.
Могу ли я выкусить имена и переименовать их?
Set fso = CreateObject("Scripting.FileSystemObject")
Set oTextStream = fso.OpenTextFile(filename)
If not oTextStream.AtEndOfStream Then
s = oTextStream.ReadLine
Pos1 = InStr(1, s, """")
Pos2 = InStrRev(s, """")
If (Pos1 > 0) and (Pos2 > Pos1) Then
content = Mid(s, Pos1 + 1, Pos2 - Pos1 - 1)
Else
content = "not found"
End If
End If
oTextStream.Close
Скрипт ищет в первой строке файла кавычки (“) и возвращает заключённый в них текст.
Еще желание для Script_WDX: как-то задавать ТИП результата. А то иначе Командир в фильтрах всегда третирует script.Result как стринг, и соответственно операции стринговъе (contains, equal, regexp). Иногда полезно чтоб результат бъл числовъм (<, >).
Вот например в моем скрипте для изчисления разницъ дат до "базового" файла я бъл заставлен добавить к результату значок (+) или (-) в зависимости от разницъ, чтоб можно бъло потом сделать фильтр для раскрашивания.
Мне не нравятся результаты округления числовых значений возвращяемых контентными плагинами, поэтому в своих плагинах работающих только с числами, я всё равно возвращаю стринг. В ToDo занесу, сделать не обещаю.
Где 1 - режим работы скрипта. Будет актуально, если ты всё же сделаешь возможность возврата нескольких результатов одним плагином.
В принципе, можно и добавить какой-нибудь параметр, например, Params:
Еще идея - а почему имя инишника всегда script.ini? Если имя инишника делать по имени файла плагина, то в одной папке можно хранить несколько wdx-ов.
Или ...
Еще вариант - передавать в скрипт имя файла вызвавшего его плагина - для использования одного скрипта с несколькими файлами плагина. Т.е. в одной папке лежит один скрипт, один инишник и несколько wdx.
При программировании, задал жестко. Потом люди захотели нескольких экземпляров плагина - придумал обходной путь, в код даже и не влезал...
переделать имхо несложно, но времени нет. На данный момент сделал поддержку sub's и function's в скрипте, потом стал привинчивать многоколоночность и попортил, то что было.
Про передачу параметров надо думать.
Lev
Не мог бы ты прикрутить принудительный выход из скрипта, типа WScript.Quit? Просто, если возвращаемое значение уже определено, не очень красиво дальше вешать кучу if-ов.
Lev
Пинудительное завершение WScript.Quit выдает ошибку, а принудительно ускакать можно только с помощью обрамляющих if-ов, отчего код не очень красиво выглядит.
А обрамление в sub/end sub с exit sub в местах выхода - красиво? (то же самое для function)
А в основном блоке соответственно просто вызов процедуры/функции.
Добавлено:
Переделал, с учетом новой идеи, скрипт поиска по списку. По-моему, так даже на порядок красивее (функции можно называть по имени возвращаемой колонки):
'============================
' Колонка Result будет возвращать признак наличия файла\каталога в указанном файле-списке:
' 0 - файл\каталог НЕ найден; 1 - файл\каталог найден
'=== Изменяемые параметры ===
Const FileList = "C:\FileList.txt" 'Файл-список
'============================
Dim FSO
Const ForReading = 1
content = Result
Set FSO = Nothing
Function Result
Dim List, dlm
Result = 0
Set FSO = CreateObject("Scripting.FileSystemObject")
If Not FSO.FileExists(FileList) Then
Exit Function
End If
On Error Resume Next
List = FSO.OpenTextFile(FileList, ForReading, False).ReadAll
If Err.Number <> 0 Then
Exit Function
End If
On Error GoTo 0
dlm = vbNewLine
If InStr(1, dlm & List & dlm, dlm & filename & dlm, vbTextCompare) > 0 Then
Result = 1
End If
End Function
В поставке по-умолчанию вполне себе рабочий script.ini, в котором подключен скрипт ext.vbs, выдающий результаты для ps, eps, htm, url и т.п. файлов.
Методы установки, подключения и использования плагина практически не отличаются от остальных контентных wdx плагинов. Эти методы раскрыты в хелпе и неоднократно на страницах форума, переписывать их лишний раз и в эту тему не вижу необходимости.
Лучше опишите, что и как Вы делаете и что у Вас не получается.