Script Request
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3 ... , 40, 41, 42  Next  :| |:
Total Commander -> Автоматизация Total Commander

#601:  Author: FlasherLocation: Москва PostPosted: Tue Jun 02, 2020 11:26
    —
WindR
Речь про работу скрипта, а не самостоятельный жимоклик. Так?

#602:  Author: WindR PostPosted: Tue Jun 02, 2020 11:40
    —
Flasher
Само на панель не вываливается, только в окно поиска.

#603:  Author: FlasherLocation: Москва PostPosted: Tue Jun 02, 2020 12:10
    —
WindR
Мда. Думал, это только у меня косячит. Посмотрю, как оно с нажатием кнопки будет. Но без TCFS2 тут уже, увы, не обойтись.

#604:  Author: FlasherLocation: Москва PostPosted: Fri Jul 17, 2020 04:02
    —
По запросу:
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

#605:  Author: kirimbay PostPosted: Fri Jul 17, 2020 11:01
    —
Не могу победить, жесть какая-то
https://yadi.sk/i/bwzhiNW-CkogkA

#606:  Author: FlasherLocation: Москва PostPosted: Fri Jul 17, 2020 11:10
    —
kirimbay
Снизу памятки чётко расписано, в какой форме должно быть обращение при проблемах, в т. ч. как вставлять информацию из подобных окон. Вы до сих пор её так и не прочли?

#607:  Author: Abrupt PostPosted: Tue Apr 20, 2021 23:12
    —
Помогите со скриптом, плиз.
Нужно переместить все файлы из активной панели в соседнюю и открыть все перемещенные файлы программой, которой они открываются по умолчанию.

#608:  Author: Zmy PostPosted: Thu Apr 22, 2021 21:27
    —
Abrupt, я написал бы, но для этого надо подробно описывать задачу зараннее.
Чтобы не возникало никаких вопросов.
Типа, что делать, если файл с таким именем уже существует в целевой директории.
Или ожидать ли окончания работы предыдущего файла. И вид окна неясен.

#609:  Author: Abrupt PostPosted: Sat Apr 24, 2021 21:09
    —
Zmy
Спасибо за отклик! Не знал, что столько нюансов)
Если файл существует, то переписывать поверх без вопросов.
Открывать все файлы сразу, не меняя вид окна (предполагается, что все используемые приложения уже запущены).

#610:  Author: Zmy PostPosted: Sun Apr 25, 2021 10:14
    —
Простым скриптом таких результатов не достичь. Чтобы окна не менялись или изменялись.
Ведь каждая программа сама определяет, сколько экземпляров она может работать. И как она сама себя ведёт.
Со сложными программами, там ещё сложнее. Типа 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, в панели инструментов или в меню Старт.
Если появятся какие-нибудь ошибки, то скажете, что пишет или скрин под коврик положите.

#611:  Author: Abrupt PostPosted: Sun Apr 25, 2021 21:24
    —
Zmy
Сделал с аргументом 14 (перезаписать, одновременно, в нормальном окне), Параметры: 14 "%T" "%P%S"
в результате срабатывает только на файле под курсором, т.е. по-одному,
с файлами, названными по-русски не работает,
при использовании с JPG выдает ошибку

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

Картинки мне форум не дает вставить...

#612:  Author: Zmy PostPosted: Mon Apr 26, 2021 07:35
    —
Посмотрел я, почему при ожидании стандартное средство просмотра фотографий 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()


#613:  Author: Abrupt PostPosted: Thu Apr 29, 2021 23:07
    —
Zmy
Русские названия заработали, спасибо! Но у меня по прежнему отрабатывается только один файл под курсором, когда выделяешь все, ничего не происходит. И мне все-таки хотелось бы, чтобы файлы не нужно было выделять, а обрабатывались бы все файлы в активной панели, так можно сделать?

#614:  Author: Monarch-LFV PostPosted: Tue May 24, 2022 11:39
    —
К запросу:
Написал 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

#615:  Author: ZZZAlexZZZ PostPosted: Wed May 25, 2022 10:32
    —
Monarch-LFV
Спасибо за скрипт. Можно уточнить: "(можно прописывать в правилах свои хотелки)" - имеется ввиду только в этой части
Code:
  objRegEx.Pattern = "[^\wА-Яа-яёЁ ]"
регулярку менять или есть способ внести дополнительные правило (второе, третье, и т.д.)?



Total Commander -> Автоматизация Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3 ... , 40, 41, 42  Next  :| |:
Page 41 of 42

Powered by phpBB © 2001, 2005 phpBB Group