Script Content Plugin

Обсуждение только плагинов и утилит для Total Commander.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

Переименование файлов по содержимому (Исходная тема (Нем.))

Q. У меня есть автоматически пронумерованые текстовые файлы (1.txt, 2.txt,…), в первой строке содержимого которых в кавычках содержится их настоящее имя.
Могу ли я выкусить имена и переименовать их?

ricobautsch

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

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
Скрипт ищет в первой строке файла кавычки (“) и возвращает заключённый в них текст.

Теперь легко произвести мультипереименование.
valexiev
Сообщения: 12
Зарегистрирован: Пт фев 09, 2007 03:24

Сообщение valexiev »

Еще желание для Script_WDX: как-то задавать ТИП результата. А то иначе Командир в фильтрах всегда третирует script.Result как стринг, и соответственно операции стринговъе (contains, equal, regexp). Иногда полезно чтоб результат бъл числовъм (<, >).

Вот например в моем скрипте для изчисления разницъ дат до "базового" файла я бъл заставлен добавить к результату значок (+) или (-) в зависимости от разницъ, чтоб можно бъло потом сделать фильтр для раскрашивания.
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

Мне не нравятся результаты округления числовых значений возвращяемых контентными плагинами, поэтому в своих плагинах работающих только с числами, я всё равно возвращаю стринг. В ToDo занесу, сделать не обещаю.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Lev
Тут появилась идея - в параметре Script иметь возможность задавать параметры для скрипта, например:

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

Script=My_Script.vbs 1
Где 1 - режим работы скрипта. Будет актуально, если ты всё же сделаешь возможность возврата нескольких результатов одним плагином.
В принципе, можно и добавить какой-нибудь параметр, например, Params:

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

Script=My_Script.vbs
Params=1 2 3 4
или

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

Script=My_Script.vbs
Param1=1
Param2=2
Param3=3
Param4=4
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Еще идея - а почему имя инишника всегда script.ini? Если имя инишника делать по имени файла плагина, то в одной папке можно хранить несколько wdx-ов.

Или ...

Еще вариант - передавать в скрипт имя файла вызвавшего его плагина - для использования одного скрипта с несколькими файлами плагина. Т.е. в одной папке лежит один скрипт, один инишник и несколько wdx.


Новый скрипт - http://forum.wincmd.ru/viewtopic.php?p=26601#26601.
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

а почему имя инишника всегда script.ini?
При программировании, задал жестко. Потом люди захотели нескольких экземпляров плагина - придумал обходной путь, в код даже и не влезал...
переделать имхо несложно, но времени нет. На данный момент сделал поддержку sub's и function's в скрипте, потом стал привинчивать многоколоночность и попортил, то что было.
Про передачу параметров надо думать.
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

Пример передачи параметров скрипту через интерфейс настройки колонок
Пример привинчивания AHK скрипта, в данном случае показывает информацию о фрагментированности файлов.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

На всякий случай - Поиск по списку.

Lev
Не мог бы ты прикрутить принудительный выход из скрипта, типа WScript.Quit? Просто, если возвращаемое значение уже определено, не очень красиво дальше вешать кучу if-ов.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

Не очень понял, давно ничего не скриптовал :(
а разве средствами vbs нельзя завершить скрипт или принудительно ускакать в его хвост?
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Lev
Пинудительное завершение WScript.Quit выдает ошибку, а принудительно ускакать можно только с помощью обрамляющих if-ов, отчего код не очень красиво выглядит.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

А обрамление в sub/end sub с exit sub в местах выхода - красиво? (то же самое для function)
А в основном блоке соответственно просто вызов процедуры/функции.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Lev
Хм. Отлично!

Добавлено:
Переделал, с учетом новой идеи, скрипт поиска по списку. По-моему, так даже на порядок красивее :) (функции можно называть по имени возвращаемой колонки):

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

'============================
' Колонка 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
Нет, я не сплю. Я просто медленно моргаю.
stal1n
Сообщения: 13
Зарегистрирован: Сб июн 14, 2008 21:07

Сообщение stal1n »

пожалуйста покажите кто-нибудь свой рабочий script.ini
я никак не могу настроить ни один скрипт :(

если можно, напишите как правильно подключать скрипты
stal1n
Сообщения: 13
Зарегистрирован: Сб июн 14, 2008 21:07

Сообщение stal1n »

неужели никто не поможет?
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

В поставке по-умолчанию вполне себе рабочий script.ini, в котором подключен скрипт ext.vbs, выдающий результаты для ps, eps, htm, url и т.п. файлов.
Методы установки, подключения и использования плагина практически не отличаются от остальных контентных wdx плагинов. Эти методы раскрыты в хелпе и неоднократно на страницах форума, переписывать их лишний раз и в эту тему не вижу необходимости.
Лучше опишите, что и как Вы делаете и что у Вас не получается.
Ответить