Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Создание ярлыков выделенных файлов ассоциированн. программой 
Author Message
Andrey_A



PostPosted: Thu Sep 09, 2010 12:28    Post subject: Создание ярлыков выделенных файлов ассоциированн. программой Reply with quote

Столкнулся с такой проблемой
Заметил, что создавая ярлыки для некоторых файлов обычными способами, они на рабочем столе и в проводнике просто не работают, потому что в системе эти файлы не ассоциированы
Давно пользуюсь написанным для этого скриптом (я его немного уменьшил)
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] и, находя расширения, брал информацию и вставлял бы блок для каждого из них в этот скрипт. Тем самым получился бы скрипт, создающий ярлыки открывающие файл нужной нам программой. Я думаю, что это пригодится не только мне
Спасибо заранее за понимание
View user's profile Send private message Send e-mail Visit poster's website ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group