Script Request

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

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

Аватара пользователя
Monarch-LFV
Сообщения: 360
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

ZZZAlexZZZ
"Свои хотелки" имеется ввиду в блоке "ПРАВИЛА ПЕРЕИМЕНОВАНИЯ" (специально выделил строками "==========").
Можно и регулярку менять, и дописывать свои правила (второе, третье, и т.д.) в зависимости от поставленной задачи. Если вы не заметили, там кроме регулярки еще меняются знаки подчеркивания на пробелы командой replace и задвоенные пробелы (в цикле).
Аватара пользователя
ZZZAlexZZZ
Сообщения: 68
Зарегистрирован: Сб мар 08, 2014 22:25

Сообщение ZZZAlexZZZ »

Monarch-LFV
Можно пару примеров?
Например, второе - заменить 123 на 321, третье - заменить мама рама на Мама Рама.
Аватара пользователя
Monarch-LFV
Сообщения: 360
Зарегистрирован: Пн июл 22, 2019 13:20

Сообщение Monarch-LFV »

ZZZAlexZZZ
Если конкрено так, то так:

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

fn=replace(fn, "123", "321")
fn=replace(fn, "мама рама", "Мама Рама")
Аватара пользователя
ZZZAlexZZZ
Сообщения: 68
Зарегистрирован: Сб мар 08, 2014 22:25

Сообщение ZZZAlexZZZ »

Monarch-LFV
Понял, спасибо. Почудилось что есть способ с регулярками без replace и дублирования

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

objRegEx.Pattern = "[^\wА-Яа-яёЁ ]"
    objRegEx.Global = True
WindR
Сообщения: 35
Зарегистрирован: Сб дек 21, 2019 13:38

Сообщение WindR »

Flasher писал(а):По запросу:

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

'============================= VBS =============================
' Выделение всех объектов между двумя выделенными (включительно)
' Условие: необходим компонент TCScript.dll 1.0.0.14+
' Параметры: %S [/p:<ms>]
' Ключ /p:<ms> задаёт задержку в миллисекундах (40 по умолчанию)
'========================================== Автор: Flasher © ===
Option Explicit : Dim A, TCH, M, Check : Set A = WSH.Arguments
Set TCH = CreateObject("TCScript.Helper")
If A.UnNamed.Count <> 2 Then Quit "Выберите 2 объекта!"
M = A.Named("p") : If IsEmpty(M) Then M = 40
With TCH
  .Pause = 0 : .LockTC True : Cm(2049)(2056)
  Check = StrComp(A(0), .GetInfo("SN"), 1) <> 0
  If Check Then Cm(2053) End If : Cm(544)
  If Check Then Cm(2056) : .SendKeyStroke "+^{HOME}" : .Sleep M
  Cm(2057) : Check = StrComp(A(1), .GetInfo("SN"), 1)
  If Check = 0 Then Cm(544) Else Cm(2054)(2937) : .SendKeyStroke "+{End}" : .Sleep M
  Cm(525) : If Check <> 0 Then Cm(2054) End If  : .LockTC False
End With: Set TCH = Nothing
Function Cm(n) TCH.SendCommand n, 1 : Set Cm = GetRef("Cm") End Function

Sub Quit(Msg)
  With TCH
    Dim Color : .LockTC False
    Color = .INIRead(.MainINI, "Colors", "BackColor", "16777215")
    If Color = "-1" Then Color = 16777215
    CreateObject("Internet.HHCtrl").TextPopup Msg,_
    .INIRead(.MainINI, "AllResolutions", "FontNameTip", "Verdana") &","&_
    .INIRead(.MainINI, "AllResolutions", "FontSizeTip", "10"), 20, 10,_
    Abs(.INIRead(.MainINI,"Colors","ForeColor","-1")), Color
    WSH.Sleep 2000 : Set TCH = Nothing : WSH.Quit
  End With
End Sub
На Windows 11 22H2 строка

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

If A.Named.Exists("a") - ((Split(Split(FSO.OpenTextFile(WSS.Environment("Process")("COMMANDER_INI"))._
ReadAll, "LastSearchOptions=")(1), vbCr)(0) And 1024) = 0) = 0 Then Keys = "{TAB 6} "
выдаёт ошибку

Script: C:\TCPU\Scripts\search.vbs
Line: 11
Char: 1
Error: Subscript out of range: '[number: 1]'
Code: 800A0009
Source: Microsoft VBScript runtime error
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

WindR
Автор интересующего скрипта на этом форуме, к сожалению, ответить вам не сможет. Возможно. захочет разбираться на Windows 11 кто-то ещё, ждите. А на скрипт, приведённый в текущей теме, достаточно было дать ссылку, а не цитировать его весь (см, прикреплённую памятку).
Даже самая богатая фантазия
Не представит себе наши безобразия.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

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

Сообщение Batya »

WindR
Что-то меня с возрастом стало подводить зрение... В приведённом скрипте не вижу процитированную ниже строку.
Нет, я не сплю. Я просто медленно моргаю.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Batya
Наверное, эта строка ошибочно взята из другого скрипта на 40-ой странице.
Ответить