Скрипты для Total Commander
-
Скрипты - уникальный инструмент для достижения различных целей в работе с файлами и не только, особенно в файловом менеджере, даже если вы раньше об этом ничего не слышали и не знали, то путём простых движений вы можете оптимизировать свои действия
Тема тестирования скриптов создана для увеличения функциональности Total Commander
Всё это делается для тех, кто хочет экономить время и автоматизировать работу
Огромное спасибо участникам, авторам и всем повлиявшим на тему
#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#
В этой теме Каждый может выложить свой скрипт, написанный на любом языке: vbs, js, hta, au3,ahk, bat,cmd... - главное, чтобы он относился как-то к Total Commander, можно было им воспользоваться и к нему было должное описание к применению.
#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#
В теме "Тестирование и заказ скриптов" Каждый может протестировать, дать свой комментарий (все комментарии из этой темы будут удаляться)...если есть интересная идея, вы так же можете поделиться ей в соседней теме и заказать скрипт, а вдруг она покажется интересной для авторов...
#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#/#Сообщение отредактировал LonerD 25 апреля 2017 - 04:38Читайте: Справочные материалы по работе c TC + Онлайн справка TC
22 ноября 2011 - 13:03 / #1 -
GoParallelDirectory.vbs
Переход в параллельный каталог не заходя в родительский
Используется TCMC.exe - файл можете скачать в шапке темы' GoParallelDirectory.vbs
'======================== Описание =====================================
' Переход в параллельный каталог не заходя в родительский
' Автор: Аверин Андрей
' Версия: 1.1 (14.11.2011)
' Mail: Averin-And@yandex.ru
' Site: http://tc-image.3dn.ru
'==================== Изменяемые пути ===================================
TCMC = "%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe"
'=========================================================================
Dim WSH
Set WSH = CreateObject("WScript.Shell")
Titles = "Переход в параллельный каталог "
RunTCMC("CM2002 CM2018") : WScript.Sleep 22 : Path1 = GetClip
WSH.SendKeys "{DOWN}" : WScript.Sleep 22
RunTCMC("CM2018") : WScript.Sleep 22 : Path2 = GetClip
If CreateObject("Scripting.FileSystemObject").FolderExists(Path2) Then
If (StrComp(Path1, Path2 ,vbTextCompare) <> 0) Then
RunTCMC("CM2003")
Else
intButtonclicked = MsgBox ("В этой панели папок больше нет!" & vbNewLine &_
"Хотите начать cначала?" , 33, Titles)
If intButtonclicked = 1 Then
WSH.SendKeys "{HOME}" & "{DOWN}" : WScript.Sleep 200 : RunTCMC("CM2003")
Else
WsEnd
End If
End If
Else
intButtonclicked = MsgBox ("Папки закончились, остались только файлы!" & vbNewLine &_
"Хотите начать cначала?" , 33, Titles)
If intButtonclicked = 1 Then
WSH.SendKeys "{HOME}" & "{DOWN}" : WScript.Sleep 200 : RunTCMC("CM2003")
Else
WsEnd
End If
End If
WsEnd
Sub WsEnd : Set WSH = Nothing : WScript.Quit : End Sub
Sub RunTCMC(Comm) : WSH.Exec(TCMC & " 50 " & Comm) : End Sub
Function GetClip
On Error Resume Next
GetClip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
End FunctionСообщение отредактировал Andrey_A 9 марта 2012 - 01:32Читайте: Справочные материалы по работе c TC + Онлайн справка TC
23 ноября 2011 - 17:23 / #41 -
PathFolderLevelN.vbs
Сканирование путей папок до N уровня из файл списка и запись результата в файл' PathFolderLevelN.vbs
'======================================================================
' Сканирование путей папок до N уровня из файл списка и запись результата в файл
'======================== Параметры ===================================
' В параметрах вызова из TC должно быть прописанo 3 параметра:
' {путь\к\списку папок.txt} {путь\сохранения\файла.txt}
'======================= Дополнение =====================================
' Ситаксис списка папок
' "путь\к\папке" N ( N - число уровеней, в которых требуется найти все папки)
' "%COMMANDER_PATH%\Plugins" 2
' "%COMMANDER_PATH%\Programs" 2
' "%COMMANDER_PATH%\Scripts" 1
'======================== Примеры ===================================
' "%%COMMANDER_PATH%%\Files\Lists\PathList.txt" "c:\12345.txt"
'
' Автор: Аверин Андрей
' Версия: 1.2 (24.12.2010 - 28.08.2011)
' Mail: Averin-And@yandex.ru
' Site: http://tc-image.3dn.ru
'======================================================================
Option Explicit
If WScript.Arguments.Count < 2 Then
MsgBox "Не хватает параметров!!!", vbOKOnly & vbCritical, "Создание списков папок"
WScript.Quit
End If
Dim FSO, MyFile, List, Folder, PathLines, PathList, Level, Text, SubFolder, FF, i
Set FSO = CreateObject("Scripting.FileSystemObject")
PathList = FSO.OpenTextFile(GetPath(WScript.Arguments(0)), 1).ReadAll
PathLines = Split(PathList, vbNewLine)
For i = 0 To Ubound(PathLines)
Level = CInt(Right(PathLines(i), Len(PathLines(i)) - InStrRev(PathLines(i), " ")))
Folder = GetPath(Replace(Left(PathLines(i), InStrRev(PathLines(i), " ") - 1), """", ""))
Text = Text & Folder & vbNewLine
If Level > 0 Then ScanFolders(0)
Set FF = Nothing
Next
FSO.CreateTextFile(WScript.Arguments(1), True).Write(Text)
Set FSO = Nothing : Wscript.Quit
Sub ScanFolders(n)
Set FF = FSO.GetFolder(Folder)
For Each SubFolder In FF.SubFolders
Text = Text & SubFolder.Path & vbNewLine : Folder = SubFolder.Path
if Level > n Then ScanFolders(n + 1)
Next
End Sub
Function GetPath(pPath)
GetPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings(pPath)
End FunctionСообщение отредактировал Andrey_A 11 марта 2012 - 20:19Читайте: Справочные материалы по работе c TC + Онлайн справка TC
23 ноября 2011 - 17:25 / #42 -
StructuraNul.vbs
Создание в соседней панели пустой структуры выделенных папок и файлов' StructuraNul.vbs
'======================== Описание ============================
' Создание в соседней панели пустой структуры выделенных папок и файлов
'======================= Параметры ============================
' 1-й параметр: список файлов\папок
' 2-й параметр: куда\сохранять\пустую\структуру
' 3-й параметр: любой, означает, что создаваться будет только структура папок
'======================== Примеры ============================
' %L %t - пустая структура папок и файлов
' %L %t 1 - пустая структура папок
' Автор: Batya & Аверин Андрей
' Версия: 1.2 (4.11.2009 - 30.10.2011)
' Site: http://tc-image.3dn.ru
'===============================================================
Option Explicit
Dim FSO, OTF, Target, NewTar, Name, Ext, Selected, Cnt
Set FSO = CreateObject("Scripting.FileSystemObject")
With WScript
Cnt = .Arguments.Count
If Cnt < 2 Then
MsgBox "Не хватает параметров!" & vbNewLine &_
"Должно быть прописано минимум 2 параметра %L %t",_
vbOKOnly & vbInformation, "Создание пустой структуры файлов"
.Quit
End If
Set OTF = FSO.OpenTextFile(.Arguments(0), 1)
Target = CreateObject("Shell.Application").NameSpace(.Arguments(1)).Self.Path & "\"
End With
Do While Not OTF.AtEndOfStream
Selected = OTF.ReadLine
If FSO.FileExists(Selected) Then FSO.CreateTextFile(Target & FSO.GetFileName(Selected))
If FSO.FolderExists(Selected) Then
NewTar = Target & FSO.GetFolder(Selected).Name
If Not FSO.FolderExists(NewTar) Then FSO.CreateFolder(NewTar)
FolderProcess FSO.GetFolder(Selected), NewTar & "\"
End If
Loop
Set OTF = Nothing : Set FSO = Nothing : WScript.Quit
Function FolderProcess(Fold, Tar)
Dim sf, f, NewF
For Each sf in Fold.SubFolders
NewF = Tar & sf.Name
If Not FSO.FolderExists(NewF) Then FSO.CreateFolder(NewF)
FolderProcess sf, NewF & "\"
Next
If Cnt < 3 Then
For Each f in Fold.Files
FSO.CreateTextFile(Tar & FSO.GetFile(f).Name)
Next
End If
End FunctionСообщение отредактировал Andrey_A 11 марта 2012 - 20:20Читайте: Справочные материалы по работе c TC + Онлайн справка TC
23 ноября 2011 - 17:27 / #43 -
StrukturaFolders.vbs
Создание структуры каталогов вглубь и в ширину
Используется TCMC.exe - файл можете скачать в шапке темы' StrukturaFolders.vbs
'======================== Описание =======================================
' Создание структуры каталогов вглубь и в ширину
'======================== Параметры =======================================
' 1-й параметр: путь\создания\каталогов
' 2-й параметр: имя создаваемых каталогов
' 3-й параметр: глубина создаваемых каталогов (1-10)
' 4-й параметр: количество создаваемых каталогов в каждом подкаталоге
' Два параметра обязательны!!! 3 и 4 можно ввести во всплывающих диалогах
'======================== Примеры =======================================
' %p "%O" - создать в текущей панели структуру именем файла\папки
' %t "Каталог" 3 5
'
' Автор: Аверин Андрей
' Версия: 1.4 (2010 - 30.10.2011)
' Mail: Averin-And@yandex.ru
' Site: http://tc-image.3dn.ru
'============================================================================
With WScript
Cnt = .Arguments.Count
If Cnt < 2 Then
MsgBox "Неправильно указано количество параметров!" & vbNewLine &_
"Должно быть минимум ДВА параметра!" & vbNewLine &_
" ""%p"" ""%O"" A у Вас прописано " & Cnt &_
" !!! " , vbOKOnly & vbInformation, "Создание структуры каталогов"
.Quit
Else
If Cnt > 2 Then
D = .Arguments(2)
Else
If D = 0 or D = "" Then D = InputBox ("Введите ГЛУБИНУ создания каталогов" & vbNewLine &_
"( Цифру от 1 до 10 )" , "Создание структуры каталогов",1)
If D = 0 or D = "" Then .Quit
End If
If Cnt > 3 Then
N = .Arguments(3)
Else
If N = 0 or N = "" Then N = InputBox ("Введите КОЛИЧЕСТВО каталогов, создаваемых в каждом подкаталоге" ,_
"Создание структуры каталогов",1)
If N = 0 or N = "" Then .Quit
End If
End If
Path = .Arguments(0) : FileName = .Arguments(1)
End With
With CreateObject("Scripting.FileSystemObject")
If Mid(Path,Len(Path),1) = "\" Then
Path = Path
Else
Path = FSO.GetParentFolderName(Path) & "\"
End If
If Len(FileName) = 0 Then FileName = "Каталог"
If D > 0 Then
For i = 1 To N
NewFold1 = Path & Numer(1, i) : .CreateFolder(NewFold1)
If D => 1 Then
For m = 1 To N
NewFold2 = NewFold1 &Numer(2, m) : .CreateFolder(NewFold2)
If D => 2 Then
For k = 1 To N
NewFold3 = NewFold2 & Numer(3, k) : .CreateFolder(NewFold3)
If D => 3 Then
For o = 1 To N
NewFold4 = NewFold3 & Numer(4, o) : .CreateFolder(NewFold4)
If D => 4 Then
For p = 1 To N
NewFold5 = NewFold4 & Numer(5, p) : .CreateFolder(NewFold5)
If D => 5 Then
For l = 1 To N
NewFold6 = NewFold5 & Numer(6, l) : .CreateFolder(NewFold6)
If D => 6 Then
For r = 1 To N
NewFold7 = NewFold6 & Numer(7, r) : .CreateFolder(NewFold7)
If D => 7 Then
For s = 1 To N
NewFold8 = NewFold7 & Numer(8, s) : .CreateFolder(NewFold8)
If D => 8 Then
For t = 1 To N
NewFold9 = NewFold8 & Numer(9, t) : .CreateFolder(NewFold9)
If D => 9 Then
For u = 1 To N
NewFold10 = NewFold9 & Numer(10, u) : .CreateFolder(NewFold10)
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
Next
End If
End With
CreateObject("WScript.Shell").Exec("%COMMANDER_PATH%\Utilities\TotalCom\TCMC\TCMC.exe 100 CM540")
Wscript.Quit
Function Numer(nnn,iii)
Numer = "\" & FileName & "_" & nnn & "_" & iii\ 100 & (iii Mod 100)\10 & (iii Mod 10)
End FunctionСообщение отредактировал Andrey_A 11 марта 2012 - 20:20Читайте: Справочные материалы по работе c TC + Онлайн справка TC
23 ноября 2011 - 17:30 / #44 -
SummaFoldersInFolder.vbs
Подсчет количества вложенных папок (без рекурсии)' SummaFoldersInFolder.vbs
'==================================================
' Подсчет количества вложенных папок (без рекурсии)
' В параметрах вызова из TC должно быть прописано:
' %L
' Автор: Batya
' Версия: 1.0 (19.07.2005)
'==================================================
Dim FSO, StrInFile, SF, M1, TempFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TempFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
SF = 0
Do While Not TempFile.AtEndOfStream
StrInFile = TempFile.ReadLine
If FSO.FolderExists(StrInFile) Then
SF = SF + FSO.GetFolder(StrInFile).SubFolders.Count
End If
Loop
If SF > 0 Then
MsgBox "В выделенных каталогах находится" & Chr(13) & SF & Chr(13) &_
"вложенных папок в Первом уровне", vbOKOnly + vbInformation, "Результат"
Else
MsgBox "В выделенных каталогах нет вложенных папок",_
vbOKOnly + vbExclamation, "Внимание!"
End If
Set TempFile = Nothing : Set FSO = Nothing : Wscript.QuitСообщение отредактировал Andrey_A 11 марта 2012 - 20:20Читайте: Справочные материалы по работе c TC + Онлайн справка TC
23 ноября 2011 - 17:31 / #45 -
StructuraMenuTC.vbs
Структурирование файла Wcmd_*.MNU главного меню Total Commanderа' StructuraMenuTC.vbs
'===============================================================
' Структурирование файла Wcmd_*.MNU главного меню Total Commanderа
' В параметрах вызова из TC должен быть прописано путь к файлу:
' "%%COMMANDER_PATH%%\Language\Wcmd_Rus.mnu"
' или открывать его под курсором %P%N
'
' Автор: Аверин Андрей
' Версия: 1.1 (19.09.2010 - 14.11.2011)
' Mail: Averin-And@yandex.ru
' Site: http://tc-image.3dn.ru
'===============================================================
Option Explicit
Dim FSO, ListFile, SetList, Text, i, k, sym, FF, F, P, L, ContrStr, Stroka, Probel, Space
Set FSO = CreateObject("Scripting.FileSystemObject")
FF = WScript.Arguments(0)
F = CreateObject("WScript.Shell").ExpandEnvironmentStrings(FF)
Set ListFile = FSO.OpenTextFile(F, 1)
Space = 7 'изменить если нужен отступ больше или меньше
Text = "" : ContrStr = 0 : P = 0
Do While Not ListFile.AtEndOfStream
SetList = ListFile.ReadLine : Stroka = "" : Probel = ""
For i = 1 To Len(SetList)
sym = Mid(SetList, i, 1)
If sym = "P" Or sym = "M" Or sym = "E" Or sym = "S" Or sym = "H" Or sym = ";" Then
If sym = ";" Then L = 0
k = i : i = Len(SetList)
End If
Next
If SetList <> "" Then
For i = k To Len(SetList)
sym = Mid(SetList, i, 1) : Stroka = Stroka & sym
Next
End If
If P < 0 Then P = 0
If Mid(Stroka, 1, 1) = "P" Then
If ContrStr = 1 Then P = P + Space
L = P : ContrStr = 1
End If
If Mid(Stroka, 1, 1) = "M" Then
If ContrStr = 2 Then
P = P - Space : ContrStr = 1
End If
L = P + Space
End If
If Stroka = "MENUITEM SEPARATOR" Then
If ContrStr = 2 Then
P = P - Space : ContrStr = 1
End If
L = P + Space*2
End If
If Mid(Stroka, 1, 1) = "E" Then
If ContrStr = 2 Then P = P - Space
L = P : ContrStr = 2
End If
For i = 1 To L
Probel = Probel & " "
Next
Text = Text & Probel & Stroka & vbNewLine : L = 0
Loop
For i = 1 To Len(Text)
If Right(Text, Len(vbNewLine)) = vbNewLine Then
Text = Left(Text, Len(Text) - Len(vbNewLine))
Else
Exit For
End If
Next
FSO.CopyFile F, F & ".bak" ' Раскомментируйте если нужна копия файла
FSO.CreateTextFile(F, True).Write(Text)
ListFile.Close : Set ListFile = Nothing : Set FSO = Nothing : WScript.QuitСообщение отредактировал Andrey_A 11 марта 2012 - 20:21Читайте: Справочные материалы по работе c TC + Онлайн справка TC
23 ноября 2011 - 17:48 / #46 -
SumWincmd.vbs
Соединение вынесенных секций из Wincmd.ini в один файл Wincmd.full.ini
Используется FunctionsINIRWS.vbs - файл можете скачать в шапке темы' SumWincmd.vbs
'======================== Описание ======================================
' Соединение вынесенных секций из Wincmd.ini в один файл Wincmd.full.ini
' Автор: Аверин Андрей
' Версия: 1.1 (10.05.2011 - 27.10.2011)
' Mail: Averin-And@yandex.ru
' Site: http://tc-image.3dn.ru
'========================================================================
Option Explicit
Dim FSO, TC, WC, WCF, WArr, i, sKey, sFile, FS, INI
Set FSO = CreateObject("Scripting.FileSystemObject")
TC =CreateObject("WScript.Shell").ExpandEnvironmentStrings("%COMMANDER_PATH%")
INI = TC & "\Scripts\Include\FunctionsINIRWS.vbs"
Execute FSO.OpenTextFile(INI).ReadAll
WC = TC & "\Wincmd.ini" : WCF = TC & "\Wincmd.full.ini"
Call FSO.CopyFile(WC, WCF, True)
WArr = Array("Buttonbar", "Colors", "Searches", "Associations", "DirMenu", "CustomFields", _
"HintsCustomField", "Rename", "MkDirHistory", "SearchIn", "RenameTemplates", _
"Selection", "RenameSearchFind", "SearchName", "RenameSearchReplace", _
"RightHistory", "LeftHistory", "Command line history", "LeftTabs", "RightTabs", _
"SearchText", "OverWriteCustomField", "Left", "Right", "Extensions")
For i = 0 To Ubound(WArr)
WinCmd(WArr(i))
Next
Set FSO = Nothing : WScript.Quit
Sub WinCmd(Section)
sKey = ReadINI(WCF, Section, "RedirectSection")
If sKey <> "" Then
If InStr(sKey, "/") > 0 Then
sFile = sKey
If Mid(sFile, 1, 1) = Chr(34) Then sFile = Mid(sFile, 2)
If Mid(sFile, 1, Len(sFile)) = Chr(34) Then sFile = Left(sFile, Len(sFile) - 1)
Else
sFile = TC & "\" & sKey
End If
FS = ReadINISection(sFile, Section)
If Len(FS) > 0 Then
On Error Resume Next
Call WriteINISection(WCF, Section, FS)
Else
Call WriteINI(WCF, Section, "RedirectSection", "<DELETE_VALUE>")
End If
End If
End SubСообщение отредактировал Andrey_A 11 марта 2012 - 20:22Читайте: Справочные материалы по работе c TC + Онлайн справка TC
23 ноября 2011 - 17:50 / #47 -
CreateLink.vbs
Создание ярлыка файла\папки под курсором' CreateLink.vbs
'======================== Описание =====================================
' Создание ярлыка файла\папки под курсором
'======================== Параметры =====================================
' 1-й параметр: Путь\к\Файлу\папке для которой создаётся ярлык
' 2-й параметр: Путь\где\создавать\ярлык (по умолчанию Рабочий стол)
' (можно использовать относительные пути)
'======================== Примеры ====================================
' %P%N - создание ярлыка для файла\папки под курсором на рабочем столе
' %P%N "%%APPDATA%%\Microsoft\Internet Explorer\Quick Launch" - создание ярлыка для файла\папки под курсором в панели ''Быстрого запуска''
' %P%N "%%APPDATA%%\Microsoft\Windows\SendTo" - создание ярлыка для папки под курсором в панели ''Отправить в...''
' %P%N "%%USERPROFILE%%\Links" - создание ярлыка для папки под курсором в панели ''Ссылки на папки''
' Автор: Аверин Андрей
' Версия: 1.1 (18.07.2011 - 26.07.2011)
' Mail: Averin-And@yandex.ru
' Site: http://tc-image.3dn.ru
'========================================================================
With WScript
Cnt = .Arguments.Count
If Cnt > 0 Then
File = .Arguments(0)
If Len(File) = 0 Then WScript.Quit
If Cnt > 1 Then Path = .Arguments(1)
End If
End With
Dim FSO, WSH
Set WSH = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
If Len(Path) = 0 Then
Path= WSH.SpecialFolders("Desktop")
Else
Path= GetPath(Path)
End If
File= GetPath(File)
Name = FSO.GetBaseName(File)
With WSH.CreateShortcut(Path & "\" & Name & ".lnk") ' Создаём ярлык
.Arguments = ""
.Description = ""
.IconLocation = ",0"
.TargetPath = File
.WindowStyle = 1
.WorkingDirectory = FSO.GetParentFolderName(File)
.Save
End With
Set WSH = Nothing : Set FSO = Nothing : WScript.Quit
Function GetPath(aPath) : GetPath = WSH.ExpandEnvironmentStrings(aPath) : End FunctionСообщение отредактировал Andrey_A 11 марта 2012 - 20:25Читайте: Справочные материалы по работе c TC + Онлайн справка TC
23 ноября 2011 - 17:57 / #48 -
GroupChangeLNK.vbs
Групповая замена свойств ярлыков' GroupChangeLNK.vbs
'================ Описание =================
' Групповая замена свойств ярлыков.
'================ Параметры =================
' {файл-список ярлыков}|{папка с ярлыками}
'
' Примеры параметров при вызове из TC:
' %L
' "%P"
'
' Автор: Batya
' Версия: 1.0 (22.10.2009)
'==========================================
Option Explicit
Dim Mess, FSO, WSH, FF, IsFolder, F, FindStr, ReplStr, Res, Msg, K
On Error Resume Next
Main:CheckErr
On Error GoTo 0
If Res.Count > 0 Then
For Each K In Res.Keys
Msg = Msg & vbNewLine & vbNewLine & K & " - " & Res(K)
Next
Else
Msg = vbNewLine & vbNewLine & Mess(10)
End If
WSH.Popup Mess(9) & Msg, 0, Mess(0)
Quit 0
'Основная процедура
Sub Main
SetMess
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
Set Res = CreateObject("Scripting.Dictionary")
F = ""
CheckParam
FindStr = InputBox(Mess(3), Mess(0)):If FindStr = "" Then Quit 0
ReplStr = InputBox(Mess(4), Mess(0)):If ReplStr = "" Then Quit 0
If IsFolder Then
FolderProc FF
Else
For Each F In Split(FSO.OpenTextFile(FF).ReadAll, vbNewLine)
If F <> "" Then
F = GetPath(F)
If FSO.FileExists(F) Then
FileProc F
ElseIf FSO.FolderExists(F) Then
FolderProc F
End If
End If
Next
End If
End Sub
'Массив сообщений
Sub SetMess
Set Mess = CreateObject("Scripting.Dictionary")
With Mess
.Add 0, "Групповая замена свойств ярлыков"
.Add 1, "Не указаны параметры!"
.Add 2, "Первый параметр не является файлом-списком или папкой!"
.Add 3, "Введите искомый текст:"
.Add 4, "Введите текст на замену:"
.Add 5, "Выполнена замена:"
.Add 6, "Возникла ошибка:" & vbNewLine
.Add 7, "Возникла ошибка № "
.Add 8, "Файл\папка:"
.Add 9, "Результат операции:"
.Add 10, "Замен не произошло."
End With
End Sub
'Проверка входных параметров
Sub CheckParam
If WScript.Arguments.Count = 0 Then Err.Raise vbObjectError + 1, "", Mess(1)
FF = GetPath(WScript.Arguments(0))
If Not FSO.FileExists(FF) Then
If Not FSO.FolderExists(FF) Then
Err.Raise vbObjectError + 2, "", Mess(2)
Else
IsFolder = True
End If
Else
IsFolder = False
End If
End Sub
'Обработка файла-ярлыка
Sub FileProc(pPath)
Dim lExt, LNK
On Error Resume Next
lExt = FSO.GetExtensionName(pPath)
If LCase(lExt) = "lnk" Then
Msg = ""
With WSH.CreateShortcut(pPath)
.TargetPath = ReplaceIn("TargetPath", .TargetPath)
.IconLocation = ReplaceIn("IconLocation", .IconLocation)
.WorkingDirectory = ReplaceIn("WorkingDirectory", .WorkingDirectory)
.Description = ReplaceIn("Description", .Description)
.Save
End With
If Msg <> "" Then Res.Add pPath, Mess(5) & Msg
If Err.Number <> 0 Then Res.Add pPath, Mess(6) & " " & Err.Description
Msg = ""
End If
On Error GoTo 0
End Sub
'Замена в строке
Function ReplaceIn(pType, pStr)
If InStr(1, pStr, FindStr, 1) > 0 Then
Msg = Msg & vbNewLine & " " & pType & ": " & pStr & " -> "
ReplaceIn = Replace(pStr, FindStr, ReplStr, 1, 1, 1)
Msg = Msg & ReplaceIn
Else
ReplaceIn = pStr
End If
End Function
'Обработка папки
Sub FolderProc(pPath)
Dim loF
Set loF = FSO.GetFolder(pPath)
For Each F In loF.SubFolders
F = F.Path
FolderProc F
Next
For Each F In loF.Files
F = F.Path
FileProc F
Next
Set loF = Nothing
End Sub
'Разложить путь при наличии переменных окружения
Function GetPath(pPath)
GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function
'Проверка, нет ли ошибок
Sub CheckErr
Dim lMess
lMess = Mess(7) & Err.Number & ":" & vbNewLine & Err.Description
If F <> "" Then lMess = lMess & vbNewLine & vbNewLine & Mess(8) & vbNewLine & F
If Err.Number <> 0 Then
MessBox lMess, 1
Quit Err.Number
End If
End Sub
'Сообщение
Function MessBox(pMess, pMode)
Dim lIcon
Select Case pMode
Case 1 lIcon = vbCritical + vbOKOnly
Case 2 lIcon = vbExclamation + vbOKOnly
Case 3 lIcon = vbInformation + vbOKOnly
End Select
MessBox = MsgBox(pMess, lIcon, Mess(0))
End Function
'Выход
Sub Quit(pExitCode)
Set Mess = Nothing : Set Res = Nothing : Set WSH = Nothing
Set FSO = Nothing : WScript.Quit pExitCode
End SubСообщение отредактировал Andrey_A 11 марта 2012 - 20:26Читайте: Справочные материалы по работе c TC + Онлайн справка TC
23 ноября 2011 - 18:01 / #49 -
LinkFromBufferButtonTC.vbs
Создание ярлыка из кнопки Total Commander'a на панели инструментов. Предварительно необходимо скопировать кнопку в буфер обмена' LinkFromBufferButtonTC.vbs
'======================== Описание ===============================
' Создание ярлыка из кнопки Total Commander'a на панели инструментов
' Предварительно необходимо скопировать кнопку в буфер обмена
'======================== Параметры ===============================
' Параметры {"Путь\сохранения\ярлыка\"}
' %p
' "%%USERPROFILE%%\Desktop\" - Сохранить на рабочий стол
' "%%APPDATA%%\Microsoft\Internet Explorer\Quick Launch\" - Сохранить в быстрый запуск
' Автор: Аверин Андрей
' Версия: 2.1 (08.08.10 - 03.11.2011)
' Mail: Averin-And@yandex.ru
' Site: http://tc-image.3dn.ru
'==================================================================
Titles = "Создание ярлыка из кнопки Total Commander'a"
If WScript.Arguments.Count > 0 Then
tPath= GetPath(WScript.Arguments(0))
Else
MsgBox "Не хватает параметров! Должен быть один параметр %p", vbOKOnly & vbInformation,Titles : WScript.Quit
End If
Clip = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text") : Desc = ""
If Len(Clip) = 0 Or InStr(Clip, vbNewLine) = 0 Then WsEnd
On Error Resume Next
Button = Split(Clip, vbNewLine)
If Button(0) <> "TOTALCMD#BAR#DATA" Then WsEnd
Trg = Trim(GetPath(Button(1))) : Arg = Trim(GetPath(Button(2))) : Icon = Trim(GetPath(Button(3))) : fName = Button(4)
If Len(Trg) < 3 Then WsEnd
pr = LCase(Mid(Trg, 1, 3))
If pr = "cm_" Or pr = "em_" Then WsEnd
If Left(Trg, 1) = Chr(34) Then Trg = Mid(Trg, 2)
If Right(Trg, 1) = Chr(34) Then Trg = Mid(Trg, 1, Len(Trg) - 1)
If Len(fName) > 0 Then
Delim = InStr(fName, Chr(32) & "-" & Chr(32))
If Delim > 0 Then
Desc = Mid(fName, Delim + 3) : fName = Left(fName, Delim - 1)
End If
End If
' Проверка содержит ли путь вначале CD
If UCase(Mid(Trg,1,3)) = "CD " Then
Trg = Right(Trg, Len(Trg) - 3) : Icon = ",0"
End If
If fName <> "" Then
NoSym = "\/?:*><|" & Chr(34)
For i = 1 To Len(NoSym)
sym = Mid(NoSym,i,1)
If InStr(1,fName, sym) > 0 Then fName = Replace(fName, sym ,"_")
Next
End If
If InStrRev(Trg,"\") = Len(Trg) Then Trg = Left(Trg,Len(Trg) - 1)
If fName = "" Then fName = Right(Trg, Len(Trg) - InStrRev(Trg, "\"))
With CreateObject("WScript.Shell").CreateShortcut(tPath & "\" & fName & ".lnk")
.Arguments = Arg
.Description = Desc
'.HotKey = "CTRL+ALT+SHIFT+X" ' Присвоение горячей клавиши, если надо - убрать ' в начале строки
.IconLocation = Icon
.TargetPath = Trg
.WindowStyle = 1
.WorkingDirectory = CreateObject("Scripting.FileSystemObject").GetParentFolderName(Trg)
.Save
End With
WScript.Quit
Sub WsEnd
MsgBox "В буфере обмена находятся некоректные данные" & vbNewLine &_
"Выделите кнопку на панели TC и повторите заново", vbOKOnly & vbInformation, Titles : WScript.Quit
End Sub
Function GetPath(pPath) : GetPath = CreateObject("WScript.Shell").ExpandEnvironmentStrings(pPath) : End FunctionСообщение отредактировал Andrey_A 11 марта 2012 - 20:27Читайте: Справочные материалы по работе c TC + Онлайн справка TC
23 ноября 2011 - 18:11 / #50
Статистика форума, пользователей онлайн: 0 (за последние 30 минут)
---
- Создано тем
- 107
- Всего сообщений
- 4048
- Пользователей
- 99000
- Новый участник
- termojader
Powered by Bullet Energy Forum

