Andrey_A

|
Posted: Thu Sep 09, 2010 12:28 Post subject: Создание ярлыков выделенных файлов ассоциированн. программой |
|
|
Столкнулся с такой проблемой
Заметил, что создавая ярлыки для некоторых файлов обычными способами, они на рабочем столе и в проводнике просто не работают, потому что в системе эти файлы не ассоциированы
Давно пользуюсь написанным для этого скриптом (я его немного уменьшил) Code: | '======================================================================
' Создание ярлыков выделенных файлов ассоциированной программой
' Параметры: {файл-список} {целевая папка}
' Пример параметров вызова из TC: %L "%T"
' Автор Andrey_A
'======================================================================
Option Explicit
Dim FSO, TCS, ListFile, SelFile, Path, TPath, i, k, m, n, sym, Ext, Dir, Name, Argument, WD, Icon, link, Shell
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Shell = CreateObject("WScript.Shell")
Set TCS = CreateObject("TCSCRIPT.Helper")
Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
TPath = WScript.Arguments(1)
Do While Not ListFile.AtEndOfStream
SelFile = ListFile.ReadLine
Argument = """" & SelFile & """"
Dir = SelFile
WD = ""
Icon = Dir & ",0"
' Извлекаем расширение
For k = 0 To Len(SelFile)
sym = Mid(SelFile,Len(SelFile) - k,1)
If sym = "." Then
m = Len(SelFile) - k + 1
k = Len(SelFile)
end if
Next
Ext = ""
For i = m To Len(SelFile)
Ext = Ext & Mid(SelFile,i,1)
Next
' Извлекаем имя
For k = 0 To Len(SelFile)
sym = Mid(SelFile,Len(SelFile) - k,1)
If sym = "\" Then
n = Len(SelFile) - k + 1
k = Len(SelFile)
end if
Next
Name = ""
For i = n To m - 2
Name = Name & Mid(SelFile,i,1)
Next
If Ext = "djvu" or Ext = "Djvu" or Ext = "DJVU" or Ext = "djv" or Ext = "Djv" or Ext = "DJV" Then
Dir = "%COMMANDER_PATH%\Programs\Text\WinDjView\WinDjView.exe"
WD = "%COMMANDER_PATH%\Programs\Text\WinDjView\"
Icon = "%COMMANDER_PATH%\Wcmicons.dll,736"
Name = "Книга " & Name
End If
If Ext = "CHm" or Ext = "Chm" or Ext = "chm" or Ext = "CHM" Then
Dir = "%COMMANDER_PATH%\Utilities\Systems\WinHlp\hh.exe"
WD = "%COMMANDER_PATH%\Utilities\Systems\WinHlp\"
Icon = "%COMMANDER_PATH%\Wcmicons.dll,590"
Name = "Справка " & Name
End If
If Ext = "Pdf" or Ext = "PDF" or Ext = "PdF" or Ext = "PDf" or Ext = "pDf" or Ext = "pdF" or Ext = "pDF" or Ext = "pdf" Then
Dir = "%COMMANDER_PATH%\Programs\Text\Foxit_Reader\Foxit Reader.exe"
WD = "%COMMANDER_PATH%\Programs\Text\Foxit_Reader\"
Icon = "%COMMANDER_PATH%\Wcmicons.dll,1823"
End If
' Создаём ярлык
Set link = Shell.CreateShortcut(TPath & "\" & Name &".lnk")
link.Arguments = Argument
link.Description = Argument
link.IconLocation = Icon
link.TargetPath = Dir
link.WindowStyle = 1
link.WorkingDirectory = WD
link.Save
Loop
ListFile.Close
Set ListFile = Nothing
Set FSO = Nothing
WScript.Quit |
Тут есть несколько моментов с которыми сам не справлюсь и поэтому хотел попросить помощи у профессионалов
1. Подправить скрипт... (есть ли функция где Ext читался без регистра, просто длинно получается - я встречал файлы где расширения были CHM, chm, Chm и даже cHm - и так со всеми различными расширениями файлов)
2. В скрипте есть блок для определённого типа файлов (к примеру) Code: | If Ext = "CHm" or Ext = "Chm" or Ext = "chm" or Ext = "CHM" Then
Dir = "%COMMANDER_PATH%\Utilities\Systems\WinHlp\hh.exe"
WD = "%COMMANDER_PATH%\Utilities\Systems\WinHlp\"
Icon = "%COMMANDER_PATH%\Wcmicons.dll,590"
Name = "Справка " & Name
End If |
Можно ли попробовать создать другой скрипт, который бы сканировал секцию [Associations] и, находя расширения, брал информацию и вставлял бы блок для каждого из них в этот скрипт. Тем самым получился бы скрипт, создающий ярлыки открывающие файл нужной нам программой. Я думаю, что это пригодится не только мне
Спасибо заранее за понимание |
|