Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Script Request
Goto page Previous  1, 2, 3 ... , 40, 41, 42  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jun 02, 2020 11:26    Post subject: Reply with quote

WindR
Речь про работу скрипта, а не самостоятельный жимоклик. Так?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
WindR



Joined: 21 Dec 2019
Posts: 35

Post (Separately) Posted: Tue Jun 02, 2020 11:40    Post subject: Reply with quote

Flasher
Само на панель не вываливается, только в окно поиска.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Tue Jun 02, 2020 12:10    Post subject: Reply with quote

WindR
Мда. Думал, это только у меня косячит. Посмотрю, как оно с нажатием кнопки будет. Но без TCFS2 тут уже, увы, не обойтись.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Jul 17, 2020 04:02    Post subject: Reply with quote

По запросу:
Code:
'============================= 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

_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
kirimbay



Joined: 15 Jul 2020
Posts: 18

Post (Separately) Posted: Fri Jul 17, 2020 11:01    Post subject: Reply with quote

Не могу победить, жесть какая-то
https://yadi.sk/i/bwzhiNW-CkogkA
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Jul 17, 2020 11:10    Post subject: Reply with quote

kirimbay
Снизу памятки чётко расписано, в какой форме должно быть обращение при проблемах, в т. ч. как вставлять информацию из подобных окон. Вы до сих пор её так и не прочли?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Abrupt



Joined: 20 Apr 2021
Posts: 4

Post (Separately) Posted: Tue Apr 20, 2021 23:12    Post subject: Reply with quote

Помогите со скриптом, плиз.
Нужно переместить все файлы из активной панели в соседнюю и открыть все перемещенные файлы программой, которой они открываются по умолчанию.
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 78

Post (Separately) Posted: Thu Apr 22, 2021 21:27    Post subject: Reply with quote

Abrupt, я написал бы, но для этого надо подробно описывать задачу зараннее.
Чтобы не возникало никаких вопросов.
Типа, что делать, если файл с таким именем уже существует в целевой директории.
Или ожидать ли окончания работы предыдущего файла. И вид окна неясен.
Back to top
View user's profile Send private message
Abrupt



Joined: 20 Apr 2021
Posts: 4

Post (Separately) Posted: Sat Apr 24, 2021 21:09    Post subject: Reply with quote

Zmy
Спасибо за отклик! Не знал, что столько нюансов)
Если файл существует, то переписывать поверх без вопросов.
Открывать все файлы сразу, не меняя вид окна (предполагается, что все используемые приложения уже запущены).
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 78

Post (Separately) Posted: Sun Apr 25, 2021 10:14    Post subject: Reply with quote

Простым скриптом таких результатов не достичь. Чтобы окна не менялись или изменялись.
Ведь каждая программа сама определяет, сколько экземпляров она может работать. И как она сама себя ведёт.
Со сложными программами, там ещё сложнее. Типа Microsoft Office. Там уже идут системные вызовы DDE.
Короче, тут много ньюансов. Тут надо писать мощную программу, которая будет собирать всю требуемую ей статистику.
Написал я небольшой скрипт. На языке Jscript. Я не знаю, как он будет работать на операционных системах новее, чем семёрка.
Короче в заголовке скрипта есть небольшое описание.
Главное - правильно написать параметры.

Code:

// Команда:
// "C:\Folder\MoveToOther.js"
// Параметр:
// 17 "%T" "%P%S"

// Кавычки обязательны.
 
//  Skip      == 0
//  Count     == 1
//  Rewrite   == 2
   
//  Wait      == 4
   
//  View      == 8    Normal
//  View      == 16   Turned
//  View      == 32   Maximaze

// В начале первый аргумент равен нулю.
// Складываем флаги, чтобы получилось одно число. По группам. Пример:
// Я хочу, чтобы при существованиии такого же файла в целевой директории включился счётчик
// (к первому аргументу прибавляю 1), // или хочу перезаписать существующий файл (прибавляю 2).
// В противном случае, ничего не произойдёт.
//
// Дальше. Я хочу, чтобы файлы запустились одновременно. Я к предыдущему итогу должен прибавить 4.
// Дальше. Я хочу окно в нормальном виде (прибавляю 8), или я хочу видеть в свёрнутом (прибавляю 16),
// или в максимальном виде (прибавляю 32).
//
// В итоге, получаю сумму флагов. Например 17. Что значит, окно в свёрнутом виде, и прибавляется счётчик,
// при совпадении имён.

// И первому аргументу присваиваю этот итог.   


function funcion(){var g=WScript.Arguments.length;if (g<3){WScript.Echo
('Wrong Parameteres.   \n\nExample: \n\n\n\nCommand:'+'     \n\n"C:\\Kemp\\MoveAndRun.js"\n\n\nArguments:\n\n17 "%T" "%P%S"');
WScript.Quit();};var z=WScript.Arguments(1),b=parseInt(WScript.Arguments(0),10),
k=new ActiveXObject("Scripting.FileSystemObject"),u=new ActiveXObject("WScript.Shell");if
(z.substr(z.length-1,z.length)=='\\'){z=z.substr(0,z.length-1);};z+="\\";if (!k.FolderExists(z)){
WScript.Echo('Target Folder not Exist.  \n\n\n'+z+" \n");k=u=0;WScript.Quit();};var i=2,n=w=r=t="",q=h=0;for(;i<g;i++)
{n=WScript.Arguments(i);q=n.lastIndexOf("\\");w=n.charAt(q);r=n.substr(parseInt(q,10)+1);h=r.lastIndexOf(".")+1;t=
r.substr(h);w=r.substr(0,parseInt(h,10)-1);h=n.substr(0,parseInt(q,10)+1);if (z.toLowerCase()==h.toLowerCase())
{WScript.Echo("Source and Target Folders Identical. \n\n\n"+h+"\n\n"+z+" \n");break;};q=1;h=z+r;if
(k.FileExists(h)){if (b&0x1){while(k.FileExists(h)){q+=1;h=z+w+"_"+q+"."+t;};}else if
(b&0x2){w=k.GetFile(h);if(w.attributes&1){w.attributes=0;WScript.Sleep(100);};k.DeleteFile(h);}else{continue;};};if
(!k.FileExists(n)){continue;};k.MoveFile(n,h);WScript.Sleep(500);t=(b&0x04)?true:false;if(b&0x10)
{w=2;}else if(b&0x20){w=3;}else{w=1;};u.Run(h,w,t);WScript.Sleep(100);};k=u=0;WScript.Quit();};funcion()



Сохраняете это текст куда-нибудь. Даёте имя, например MoveToOther.js. И расширение должно быть JS.
Создаёте пользовательскую команду в usercmd.ini, в панели инструментов или в меню Старт.
Если появятся какие-нибудь ошибки, то скажете, что пишет или скрин под коврик положите.
Back to top
View user's profile Send private message
Abrupt



Joined: 20 Apr 2021
Posts: 4

Post (Separately) Posted: Sun Apr 25, 2021 21:24    Post subject: Reply with quote

Zmy
Сделал с аргументом 14 (перезаписать, одновременно, в нормальном окне), Параметры: 14 "%T" "%P%S"
в результате срабатывает только на файле под курсором, т.е. по-одному,
с файлами, названными по-русски не работает,
при использовании с JPG выдает ошибку

'Windows Script Host"
Строка: 46
Символ: 39
Ошибка: не удается дождаться процесса
Код: 80020009
Источник: WshShell.Run

Картинки мне форум не дает вставить...
Back to top
View user's profile Send private message
Zmy



Joined: 06 Apr 2015
Posts: 78

Post (Separately) Posted: Mon Apr 26, 2021 07:35    Post subject: Reply with quote

Посмотрел я, почему при ожидании стандартное средство просмотра фотографий Windows вываливается с ошибкой.
Потому что, оно запускается не просто так, а в процессе-оболчке (в обёртке, как svchost).
Только оно в dllhost.exe.
Т.е., сервер сценариев не может отследить окончание процесса, который назначен, как MIME-средство просмотра такого типа файла.
Измените средство просмотра для изображений по-умолчанию на прогу по-проще, тогда все проблемы исчезнут.
Типа, Imagine.exe или что-то другое.

На счёт руских символов, я вроде поправил. Вот, я даже снял видео.
Поставьте в настройках плеера качество 720.

https://disk.yandex.ru/i/4Tc0wnDBXwgh0w

Code:

// Команда:
// "C:\Folder\MoveToOther.js"
// Параметр:
// 17 "%T" "%P%S"

// Кавычки обязательны.
 
//  Skip    == 0
//  Count   == 1
//  Rewrite == 2
   
//  Wait    == 4
   
//  View    == 8    Normal
//  View    == 16   Turned
//  View    == 32   Maximaze

// В начале первый аргумент равен нулю.
// Складываем флаги, чтобы получилось одно число. По группам. Пример:
// Я хочу, чтобы при существованиии такого же файла в целевой директории включился счётчик (к первому аргументу прибавляю 1),
// или хочу перезаписать существующий файл (прибавляю 2).
// В противном случае, ничего не произойдёт.
//
// Дальше. Я хочу, чтобы файлы запустились одновременно. Я к предыдущему итогу должен прибавить 4.
// Дальше. Я хочу окно в нормальном виде (прибавляю 8), или я хочу видеть в свёрнутом (прибавляю 16), или в максимальном виде (прибавляю 32).
//
// В итоге, получаю сумму флагов. Например 17. Что значит, окно в свёрнутом виде, и прибавляется счётчик, при совпадении имён.

// И первому аргументу присваиваю этот итог.   


function funcion(){var g=WScript.Arguments.length;if (g<3){WScript.Echo
('Wrong Parameteres.   \n\nExample: \n\n\n\nCommand:'+'     \n\n"C:\\Kemp\\MoveAndRun.js"\n\n\nArguments:\n\n17 "%T" "%P%S"');
WScript.Quit();};var z=WScript.Arguments(1),b=parseInt(WScript.Arguments(0),10),
k=new ActiveXObject("Scripting.FileSystemObject"),u=new ActiveXObject("WScript.Shell");if
(z.substr(z.length-1,z.length)=='\\'){z=z.substr(0,z.length-1);};z+="\\";if (!k.FolderExists(z)){
WScript.Echo('Target Folder not Exist.  \n\n\n'+z+" \n");k=u=0;WScript.Quit();};var i=2,n=w=r=t="",q=h=0;for(;i<g;i++)
{n=WScript.Arguments(i);q=n.lastIndexOf("\\");w=n.charAt(q);r=n.substr(parseInt(q,10)+1);h=r.lastIndexOf(".")+1;t=
r.substr(h);w=r.substr(0,parseInt(h,10)-1);h=n.substr(0,parseInt(q,10)+1);if (z.toLowerCase()==h.toLowerCase())
{WScript.Echo("Source and Target Folders Identical. \n\n\n"+h+"\n\n"+z+" \n");break;};q=1;h=z+r;if
(k.FileExists(h)){if (b&0x1){while(k.FileExists(h)){q+=1;h=z+w+"_"+q+"."+t;};}else if
(b&0x2){w=k.GetFile(h);if(w.attributes&1){w.attributes=0;WScript.Sleep(100);};k.DeleteFile(h);}else{continue;};};if
(!k.FileExists(n)){continue;};k.MoveFile(n,h);WScript.Sleep(500);t=(b&0x04)?1:0;if(b&0x10)
{w=2;}else if(b&0x20){w=3;}else{w=1;};u.Run('"'+h+'"',w,t);WScript.Sleep(200);};k=u=0;WScript.Quit();};funcion()

Back to top
View user's profile Send private message
Abrupt



Joined: 20 Apr 2021
Posts: 4

Post (Separately) Posted: Thu Apr 29, 2021 23:07    Post subject: Reply with quote

Zmy
Русские названия заработали, спасибо! Но у меня по прежнему отрабатывается только один файл под курсором, когда выделяешь все, ничего не происходит. И мне все-таки хотелось бы, чтобы файлы не нужно было выделять, а обрабатывались бы все файлы в активной панели, так можно сделать?
Back to top
View user's profile Send private message
Monarch-LFV



Joined: 22 Jul 2019
Posts: 227

Post (Separately) Posted: Tue May 24, 2022 11:39    Post subject: Reply with quote

К запросу:
Написал VBS скрипт по переименованию файлов и папок по любым правилам (можно прописывать в правилах свои хотелки):
Сейчас скрипт переименовывает:
- по вашей же регулярке удаляет все небуквы, нецифры и непробелы
- заменяет все подчеркивания "_" на пробелы
- заменяет все двойные, тройные и т.п. пробелы на одиночные пробелы
Code:
'======================================================================
' Переименовать выделенные объекты по "своим" правилам

' Параметры:
' %WL
'======================================================================
Option Explicit
Dim FSO, objRegEx, FileList, List, F, k, fn, ext, path, i
Set FSO  = CreateObject("Scripting.FileSystemObject")
Set objRegEx = CreateObject("VBScript.RegExp")
FileList = WScript.Arguments(0)
List     = Split(FSO.OpenTextFile(FileList,,,-1).ReadAll, vbNewLine)
For Each F In List
  If F <> "" Then
    path = FSO.getparentfoldername(F) & "\"
    if FSO.FolderExists(F) then
      fn = FSO.GetFolder(F).name ' Имя папки
      F=left(F, len(F)-1) ' удаление последнего обратного слэша
      k=1
    else
      fn = FSO.GetBaseName(F) ' Имя файла
      ext = "." & FSO.GetExtensionName(F) ' Расширение файла
      k=0
    end if
   
    ' ======= ПРАВИЛА ПЕРЕИМЕНОВАНИЯ ==============================
    objRegEx.Pattern = "[^\wА-Яа-яёЁ ]"
    objRegEx.Global = True
    fn = objRegEx.replace(fn, "")
    fn=replace(fn, "_", " ")
    for i=1 to 5 ' удаление всех задвоенных, затроенных и т.п. пробелов
      fn=replace(fn, "  ", " ")
    next
    ' =============================================================
   
    ' Непосредственно переименование
    if k=1 then
      FSO.MoveFolder F, path & fn ' переименование папок
    else
      FSO.MoveFile F, path & fn & ext ' переименование файлов
    end if

  End If
Next
Back to top
View user's profile Send private message
ZZZAlexZZZ



Joined: 08 Mar 2014
Posts: 68

Post (Separately) Posted: Wed May 25, 2022 10:32    Post subject: Reply with quote

Monarch-LFV
Спасибо за скрипт. Можно уточнить: "(можно прописывать в правилах свои хотелки)" - имеется ввиду только в этой части
Code:
  objRegEx.Pattern = "[^\wА-Яа-яёЁ ]"
регулярку менять или есть способ внести дополнительные правило (второе, третье, и т.д.)?
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... , 40, 41, 42  Next
Page 41 of 42

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group