Andrey_A

|
Posted: Wed Oct 06, 2010 02:09 Post subject: |
|
|
Обложился различными справками по скриптам и решил задачу самостоятельно, пользуюсь уже неделю, вроде бы всё работает...
Code: | '=====================================================================================
' Создание ярлыков ВЫДЕЛЕННЫХ файлов, связанных с Программой , ассоциированной в Total Commander
'
' В параметрах вызова из TC должно быть прописанo ТРИ параметра:
' {Файл Список} {Файл\Секция Ассоциаций} {Путь сохранения ярлыка}
'
' ============== Параметр №1 {Файл Список} ==================================================
'
' Должно быть прописано %L либо Путь\к_файл_списку_открываемых_файлов.txt
'
' ============== Параметр №2 {Файл\Секция Ассоциаций} ===============================================
'
' Ассоциации прописаны в секции [Associations]
' Для корректной работы секцию рекомендуется вынести из файла Wincmd.ini , прописав в нём
' [Associations]
' RedirectSection=WinAssociations.ini
'
' Можно составить СВОЙ ФАЙЛ АССОЦИАЦИЙ, вне файла Wincmd.ini где синтаксис будет таким же как и в секции [Associations] (без строки значков)
'
' Filter1=*.TXT;*.inc;
' Filter1_open=""%COMMANDER_PATH%\Plugins\exe\AkelPad\AkelPad.exe" "%1""
' Filter2=*.JPG;*.bmp;
' Filter2_open=""%COMMANDER_PATH%\Plugins\wlx\Imagine\Imagine.exe" "%1""
'
' Важно!!! После расширения, даже если оно одно добавлять {;} (точку с запятой) т.е. Filter1=*.TXT;
'
'============== Параметр №3 {Путь сохранения ярлыка } ===============================
'
' Должно быть прописано "%T" либо "%P" либо "Путь\сохранения\ярлыка\"
'============== Примеры ===================================================================
'
' %L "%%COMMANDER_PATH%%\WinAssociations.ini" "%T"
' %L "%%COMMANDER_PATH%%\Wincmd.ini" "%P"
' %L "%%COMMANDER_PATH%%\UserAssociations_1.txt" "%APPDATA%\Microsoft\Internet Explorer\Quick Launch"
' "%%COMMANDER_PATH%%\ListFiles.txt" "%%COMMANDER_PATH%%\UserAssociations_2.txt" "%%HOMEPATH%%\Desktop\"
'
' Автор: Аверин Андрей (28.09.2010)
' Версия: 1.6
'======================================================================
Option Explicit
Dim FSO, ListFile, SelFile, TPath, Ass, ListAss, Stroka, Target, F, i, m, Ext, ExtAss, Name, Arguments, WorkingFolder, Icon, link, Shell, TPathN,Description
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Shell = CreateObject("WScript.Shell")
Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
TPath = WScript.Arguments(2)
TPath = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(TPath))
Do While Not ListFile.AtEndOfStream
SelFile = ListFile.ReadLine
Name = FSO.GetBaseName(SelFile)
Ext = FSO.GetExtensionName(SelFile) ' Извлекаем расширение файла
ExtAss = UCase("*." & Ext & ";") ' Готовим строку для поиска в ассоциациях
TPathN = TPath & "\" & Name & "." & Ext & ".lnk" ' Параметры ярлыка по умолчанию
Arguments = ""
Target = SelFile
Icon = Target & ",0"
If FSO.FolderExists(SelFile) Then ' Если выделена папка
Target = SelFile
Icon = ",0"
TPathN = TPath & "\" & Name & "." & "lnk"
Description = SelFile
End if
Ass = WScript.Arguments(1)
Ass = FSO.GetAbsolutePathName(CreateObject("WScript.Shell").ExpandEnvironmentStrings(Ass))
ListAss = Split(FSO.OpenTextFile(Ass).ReadAll, vbNewLine)
i = 0
m = 0
For Each F In ListAss
If F <> "" or Ext <> "" Then
If InStr(1,ListAss(i),"|") > 1 Then
Stroka = UCase(Left(ListAss(i), InStr(1,ListAss(i),"|")))
Else
Stroka = UCase(ListAss(i))
End If
if m = 0 Then
if InStr(1,Stroka,ExtAss) > 1 Then ' Ищем номер строки и затем ассоциированную программу
if InStr(1,UCase(ListAss(i+1)),"OPEN") > 1 Then
Target = Mid(ListAss(i+1), InStr(1, ListAss(i + 1), chr(34)) + 2 , Len(ListAss(i+1)) - InStr(1, ListAss(i + 1), chr(34)) - 8)
TPathN = TPath & "\" & Name & "." & Ext & ".lnk"
Description = SelFile
Arguments = Chr(34) & SelFile & Chr(34)
If InStr(1,UCase(ListAss(i+2)),"ICON") > 1 Then
Icon = Mid(ListAss(i+2), InStr(1, ListAss(i + 2), "=") + 1 , Len(ListAss(i+2)) - InStr(1, ListAss(i + 2), "="))
End If
End if
m = 1
End if
End if
i = i + 1
End If
Next
WorkingFolder = FSO.GetParentFolderName(Target)
Set link = Shell.CreateShortcut(TPathN) ' Создаём ярлык
link.Arguments = Arguments
link.Description = Description
link.IconLocation = icon
link.TargetPath = Target
link.WindowStyle = 1
link.WorkingDirectory = WorkingFolder
link.Save
Loop
ListFile.Close
Set ListFile = Nothing
Set FSO = Nothing
WScript.Quit |
Может кому-то тоже пригодится |
|