Script Request

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

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

laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Batya, спасибо! как всегда выручаешь, есть правда несколько пожеланий по улучшению скрипта:
1. возможность добавления ещё замен, т.е. создания списка
soft_not_tested=soft_on_dvd
mp3_not_sorted=mp3_on_dvd
и т.д.
актуально и в том случае, когда хочется открыть не только "soft_on_dvd" из "soft_not_tested", а также "soft_not_tested" из "soft_on_dvd"
2. возможность выбора поведения скрипта в случае когда папки с предпологаемым путём нет
вариант 1: создать папку по предполагаемуму пути
вариант 2: такой, какой существует сейчас и первоначально о нём просил, т.е. открывается возможный нижний уровень
3. если путь активной вкладки не содержит ни одного из указанных папок, то лучше чтобы никак действий скрипт не производил (в данном случае в соседней папке открывается либо корневой каталог диска (если содержаться пробелы в пути активной вкладки) либо тот же путь)

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

Сообщение Batya »

laburj писал(а):1. возможность добавления ещё замен, т.е. создания списка
soft_not_tested=soft_on_dvd
mp3_not_sorted=mp3_on_dvd
Добавляй, сколько хочешь:

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

' Массив заменяемых значений 
Repl.Add "soft_not_tested", "soft_on_dvd"
Repl.Add "mp3_not_sorted", "mp3_on_dvd"
laburj писал(а):актуально и в том случае, когда хочется открыть не только "soft_on_dvd" из "soft_not_tested", а также "soft_not_tested" из "soft_on_dvd"
А вот с этим сложнее. Замена части пути производится последовательно в порядке заполнения массива Repl. Сделать , как ты хочешь можно, но тогда это будет предполагать возможность только одной замены в одном пути. Т.е. если хоть раз что-то нашли, то прекращаем поиск. Так устроит?
laburj писал(а):вариант 2: такой, какой существует сейчас и первоначально о нём просил, т.е. открывается возможный нижний уровень
А сейчас это разве не работает?
laburj писал(а):вариант 1: создать папку по предполагаемуму пути
Это можно. Вариант работы прописать жетстко в скрипте или передавать параметром?
Нет, я не сплю. Я просто медленно моргаю.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Batya писал(а):тогда это будет предполагать возможность только одной замены в одном пути. Т.е. если хоть раз что-то нашли, то прекращаем поиск. Так устроит?
да, устроит! больше одной замены в пути и не требуется!
Batya писал(а):А сейчас это разве не работает?
этот вариант работает, я просто написал, какие возможные варианты хотелось бы видеть
Batya писал(а):Это можно. Вариант работы прописать жетстко в скрипте или передавать параметром?
принципиальной разницы нет, удобнее в использовании думаю вариант с передаваемым параметром, но пусть будет так, как легче сделать
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

laburj писал(а):в данном случае в соседней папке открывается либо корневой каталог диска (если содержаться пробелы в пути активной вкладки)
Этого не должно быть. У тебя в параметрах "%P" в кавычках?

Хотелки реализованы - поправлен исходный скрипт.
laburj писал(а):принципиальной разницы нет, удобнее в использовании думаю вариант с передаваемым параметром, но пусть будет так, как легче сделать
Сделал через переменную в скрипте - IsCreate может принимать значения True\False.
Нет, я не сплю. Я просто медленно моргаю.
laburj
Сообщения: 186
Зарегистрирован: Пн мар 07, 2005 07:04

Сообщение laburj »

Batya писал(а):Этого не должно быть. У тебя в параметрах "%P" в кавычках?
ты прав, кавычки не поставил..
Batya писал(а):Хотелки реализованы - поправлен исходный скрипт.
спасибо, всё работает гуд!
очень удобно использовать скрипт, когда не помнишь точно в какой находится папке: в папке с протестированным софтом или нет/ в папке с прослушенной музыкой или нет..
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Tol!k писал(а):2. Нужна возможность задания порядкового номера разделителя, который при обработке имени файла будет преобразован в "". Делать это передаваемыми параметром, например так
Код:
01 для получения abc_de\abc_de_fghi_jk.ext
1 для получения abc\abc_de_fghi_jk.ext
111 для получения abc\de\fghi\abc_de_fghi_jk.ext
011 для получения abc_de\fghi\abc_de_fghi_jk.ext
Сделал здесь. Только в переделанном варианте может глючить со "сдвоенными" параметрами.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Batya
Спасибо :)
может глючить со "сдвоенными" параметрами
Э-э, со сдвоенными разделителями?
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Tol!k писал(а):Э-э, со сдвоенными разделителями?
Ну конечно. Опечатался.

Добавлено:
Да, забыл написать. В новом варианте должно нормально работать, если один разделитель состоит из символов, набор которых уже есть в другом разделителе. Например, будет работать при разделителях " -- \ - \--\-". Только перечень разделителей надо указывать в порядке от более сложного к более простому.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Моторокер
Сообщения: 1517
Зарегистрирован: Пт май 06, 2005 08:22
Откуда: г. Пермь (читается Перьмь)
Контактная информация:

Сообщение Моторокер »

Сообщения про изменение имён файлов со скобами отделены в тему.
плагины для Total Commander, статьи Graphics Converter; NSCopy; SEO HTML; KillOK; Плагин на Delphi
ПармаСруб - строительство домов и бань в Перми
Аватара пользователя
Zorroz
Сообщения: 308
Зарегистрирован: Чт дек 16, 2004 10:40
Откуда: Россия, Иркутская обл., г. Ангарск

Сообщение Zorroz »

Есть доковский файл. Содержание две страницы. Цель: одной кнопкой печатать первую страницу, второй кнопкой печатать вторую страницу.
Всех С наступившим новым годом.
Когда ангелу обрезают крылья, он учится летать на метле...
SVM
Сообщения: 47
Зарегистрирован: Чт окт 16, 2008 16:36

Сообщение SVM »

Batya писал(а):Код:'=======================================================

' Создание текстового файла с содержимым буфера обмена

'=======================================================



Option Explicit

Dim FileName

'========== Изменяемые параметры =======================

FileName  = "descript.txt" 'Имя создаваемого файла

'=======================================================

Dim TCS, Clip, Btn, FSO, OTL, Mess, Title

Set TCS = CreateObject("TCScript.Helper")

Clip    = TCS.GetTextFromClip

Set TCS = Nothing



If Len(Clip) > 0 Then

  Set FSO = CreateObject("Scripting.FileSystemObject")

  If FSO.FileExists(FileName) Then

    Mess = "Буфер обмена содержит текст." & vbNewLine & _

           "Заменить содержимое файла " & FileName & _

           " текстом из буфера обмена?" & vbNewLine

    Title = "Замена содержимого файла"

  Else

    Mess = "Буфер обмена содержит текст." & vbNewLine & _

           "Создать файл " & FileName & _

           " с содержимым буфера обмена?" & vbNewLine

    Title = "Создание текстового файла"

  End If

  Btn = MsgBox(Mess, vbYesNo + vbQuestion, Title)

  If Btn = 7 Then 'Кнопка No

    Set FSO = Nothing

    WScript.Quit

  End If

Else

  WScript.Quit

End If



Set OTL = FSO.OpenTextFile(FileName, 2, True)

OTL.Write Clip

OTL.Close



Set OTL = Nothing

Set FSO = Nothing

WScript.Quit
Приветствую всех.
При запуске открывается окно:
Бyфep oбмeнa coдepжит тeкcт.
Coздaть фaйл descript.txt c coдepжимым бyфepa oбмeнa?
Варианты ответа - Дa - Heт
Можно ли сделать чтобы не выводилось окно а сразу создавался текстовой файл с содержимым буфера обмена?

И ещё один вопрос:
Как сделать кнопку создать ярлык (рабочий стол), без Ярлык для "название программы", а только название программы?
Спасибо.
Bubek
Сообщения: 20
Зарегистрирован: Сб июл 21, 2007 10:51

Сообщение Bubek »

Добрый день, имеется вот такой срипт, который добавляет в начало файла текущую дату:

' Copyright (c) 2006, Volniy
Option Explicit
Dim FSO, StreamFile, theFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set StreamFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
Do While Not StreamFile.AtEndOfStream
Set theFile = FSO.GetFile(StreamFile.ReadLine)
Dim M,D
M=Month(Date): If M<10 Then M= "0" & M
D=Day(Date): If D<10 Then D= "0" & D
theFile.Name = Year(Date) & "." & M & "." &D&"_" & theFile.Name
Loop
Set StreamFile = Nothing
Set FSO = Nothing
Wscript.Quit()

Файл создается вида:
2010.01.25_файл1.zip
но если такой уже существует, то есть если применить скрипт к файлу файл1.zip, то выскакивает ошибка "файл уже существует",
как бы сделать так, чтобы при наличии файла с создаваемым именем создавался файл 2010.01.25_2_файл1.zip, а если есть и такой, то 2010.01.25_3_файл1.zip и так далее.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

SVM писал(а):Можно ли сделать чтобы не выводилось окно а сразу создавался текстовой файл с содержимым буфера обмена?
Замени строку

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

Btn = MsgBox(Mess, vbYesNo + vbQuestion, Title) 
на

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

Btn = vbYes
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Bubek писал(а):как бы сделать так, чтобы при наличии файла с создаваемым именем создавался файл 2010.01.25_2_файл1.zip, а если есть и такой, то 2010.01.25_3_файл1.zip и так далее.

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

' Copyright (c) 2010, Volniy 
Option Explicit 
Dim FSO, StreamFile, theFile
Dim M,D, sDate, Cnt : Cnt = 2

Set FSO = CreateObject("Scripting.FileSystemObject") 
Set StreamFile = FSO.OpenTextFile(WScript.Arguments(0), 1) 

Do While Not StreamFile.AtEndOfStream 
  Set theFile = FSO.GetFile(StreamFile.ReadLine) 
  
  M=Month(Date): If M<10 Then M= "0" & M 
  D=Day(Date): If D<10 Then D= "0" & D 
  sDate = Year(Date) & "." & M & "." & D &"_"
  
  If FSO.FileExists(FSO.BuildPath(theFile.ParentFolder, sDate & theFile.Name)) Then
    Do While FSO.FileExists(FSO.BuildPath(theFile.ParentFolder, sDate & CStr(Cnt) _
      & "_" & theFile.Name)) = True
      Cnt = Cnt + 1
    Loop
    theFile.Name = sDate & CStr(Cnt) & "_" & theFile.Name
  Else
    theFile.Name = sDate & theFile.Name
  End If
Loop

Set theFile = Nothing
Set StreamFile = Nothing 
Set FSO = Nothing 

WScript.Quit()
Bubek
Сообщения: 20
Зарегистрирован: Сб июл 21, 2007 10:51

Сообщение Bubek »

Спасибо. работает.
P.S. для тех кто будет использовать скрипт: в кнопке нужно написать параметр "%L"
Ответить