Добавлено: Вт июн 02, 2020 10:26
WindR
Речь про работу скрипта, а не самостоятельный жимоклик. Так?
Речь про работу скрипта, а не самостоятельный жимоклик. Так?
Форум поддержки пользователей Total Commander
https://forum.wincmd.ru/
Код: Выделить всё
'============================= 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Код: Выделить всё
// Команда:
// "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()
Код: Выделить всё
// Команда:
// "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()
Код: Выделить всё
'======================================================================
' Переименовать выделенные объекты по "своим" правилам
' Параметры:
' %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Код: Выделить всё
objRegEx.Pattern = "[^\wА-Яа-яёЁ ]"