Содержимое папки \Playlists (файлы *.m3u) в Playlists.bar

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Содержимое папки \Playlists (файлы *.m3u) в Playlists.bar

Сообщение ask-rus »

В папке d:\Total Commander\SOFT\Winamp\Playlists\ постоянно появляются новые плейлисты. Чтобы так же постоянно не добавлять их в кнопку в виде меню "Playlists" ручками, необходимо автоматизировать.
d:\Total Commander\BAR\Playlists.bar
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

vbs:

Код: Выделить всё

'===================================================================
' Создание панели TC, содержащей ссылки на m3u-файлы заданной папки
'===================================================================
Option Explicit
'========== Изменяемые параметры ===================================
Const FileExt  = "m3u" 'Расширение обрабатываемых файлов
Const FileIcon = "%SystemRoot%\system32\shell32.dll" 'Файл иконок
Const NumIcon  = 116 'Номер иконки в файле иконок
Const Folder   = "d:\Total Commander\SOFT\Winamp\Playlists\" 'Обрабатываемая папка
Const Bar      = "d:\Total Commander\BAR\Playlists.bar" 'Панель TC
'===================================================================
Dim FSO, WSH, F, Text, i
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")

i = 4
For Each F In FSO.GetFolder(GetPath(Folder)).Files
  If LCase(FSO.GetExtensionName(F.Path)) = LCase(FileExt) Then
    i = i + 1
    Text = Text & "button" & CStr(i) & "="  & FileIcon & "," & NumIcon & vbNewLine &_
                  "cmd"    & CStr(i) & "="  & F.Path                   & vbNewLine &_
                  "iconic" & CStr(i) & "=0"                            & vbNewLine &_
                  "menu"   & CStr(i) & "="  & FSO.GetBaseName(F.Path)  & vbNewLine
  End If
Next

Text = "[Buttonbar]"                                            & vbNewLine &_
       "Buttoncount=" & CStr(i)                                 & vbNewLine &_
       "button1=" & GetPath("%Commander_Path%\wcmicons.dll,15") & vbNewLine &_
       "cmd1="    & GetPath("%Commander_Path%\default.bar")     & vbNewLine &_
       "iconic1=0"                                              & vbNewLine &_
       "button2="                                               & vbNewLine &_
       "iconic2=0"                                              & vbNewLine &_
       "button3=" & GetPath("%Commander_Path%\wcmicons.dll")    & vbNewLine &_
       "cmd3="    & WScript.ScriptFullName                      & vbNewLine &_
       "iconic3=0"                                              & vbNewLine &_
       "menu3=Обновить"                                         & vbNewLine &_
       "button4="                                               & vbNewLine &_
       "iconic4=0"                                              & vbNewLine &_
       Text

FSO.OpenTextFile(GetPath(Bar), 2, True).Write Text

Set WSH = Nothing
Set FSO = Nothing
WScript.Quit 0

Function GetPath(pPath)
  GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function
Последний раз редактировалось Batya Пт фев 12, 2010 13:36, всего редактировалось 1 раз.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Всё радует, да только не создавалась бы "Стрелочка" с возвратом на default.bar, всё-таки у меня кнопка в виде меню, где
d:\Total Commander\BAR\Default.bar вовсе никчему.

А, всё! Как только я прописал реальный путь к default.bar
d:\Total Commander\BAR\Default.bar
стрелочка исчезла из виду. Большое благодарю!
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Следующий вопрос по теме - привести к портабельности. Ведь здесь не просто изменить это

Код: Выделить всё

Const Folder   = "d:\Total Commander\SOFT\Winamp\Playlists\" 'Обрабатываемая папка 
Const Bar      = "d:\Total Commander\BAR\Playlists.bar" 'Панель TC
на это?

Код: Выделить всё

Const Folder   = "%COMMANDER_PATH%\SOFT\Winamp\Playlists\" 'Обрабатываемая папка 
Const Bar      = "%COMMANDER_PATH%\BAR\Playlists.bar" 'Панель TC
Или так оно и есть О_о (?)

Видимо нет...
Cцeнapий: d:\Total Commander\PLUGINS\vbs\123.vbs
Cтpoкa: 42
Cимвoл: 1
Oшибкa: Пyть нe нaйдeн
Кoд: 800A004C
Иcтoчник: Oшибкa выпoлнeния Microsoft VBScript
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

ackep писал(а):Const Bar = "%COMMANDER_PATH%\BAR\Playlists.bar" 'Панель TC

...

Oшибкa: Пyть нe нaйдeн
Поправил - в 42 строке надо вместо "Bar" написать "GetPath(Bar)".
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

А теперь чуток усложнить, чтобы плейлисты открывались определенным плеером, допустим, этот

Код: Выделить всё

%COMMANDER_PATH%\SOFT\Winamp\winamp.exe "d:\Total Commander\SOFT\Winamp\Playlists\Вахмурка.m3u"
Возможно, чтобы при нажатии на "Обновить" (понимаю, это запуск скрипта) пути в кнопках были через %COMMANDER_PATH%, нежели "d:\Total Commander\"?
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

ackep писал(а):А теперь чуток усложнить, чтобы плейлисты открывались определенным плеером, допустим, этот
Код:
%COMMANDER_PATH%\SOFT\Winamp\winamp.exe
Меняем строку

Код: Выделить всё

                  "cmd"    & CStr(i) & "="  & F.Path                   & vbNewLine &_
на

Код: Выделить всё

                  "cmd"    & CStr(i) & "= ""%COMMANDER_PATH%\SOFT\Winamp\winamp.exe"" """  & F.Path & """" & vbNewLine &_
ackep писал(а):Возможно, чтобы при нажатии на "Обновить" (понимаю, это запуск скрипта) пути в кнопках были через %COMMANDER_PATH%, нежели "d:\Total Commander"?
А зачем? Скрипт ведь всегда корректно поменяет при его запуске. Просто, например, для кнопки перехода на родительскую панель (та самая "Стрелочка") необходимо прописывать развернутый путь, иначе она будет отображаться.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Batya писал(а):Просто, например, для кнопки перехода на родительскую панель (та самая "Стрелочка") необходимо прописывать развернутый путь, иначе она будет отображаться.
В твоем случае со скриптом, то да. В обычном случае у меня там кнопки-менюшки... "стрелочки" не отображаются, хотя %COMMANDER_PATH% повсюду.
Ещё раз спасибо.
Фaйл нe нaйдeн!
:shock:
Какая-то нелепая кавычка:)
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\SOFT\Winamp\winamp.exe" "D:\Total Commander\SOFT\Winamp\Playlists\1.m3u

%SystemRoot%\system32\shell32.dll,116
1

0
-1
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Перепробовал и так, и сяк, не могу обнаружить хитрую кавычку-шпиона.
Фaйл нe нaйдeн!
К тому же нет завершающей кавычки после .m3u" в кнопке...
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

ackep писал(а):Какая-то нелепая кавычка
Ты полностью строку поменял?
В конце строки кавычки не пропущены?!
& F.Path & """" & vbNewLine &_
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Код: Выделить всё

'=================================================================== 
' Создание панели TC, содержащей ссылки на m3u-файлы заданной папки 
'=================================================================== 
Option Explicit 
'========== Изменяемые параметры =================================== 
Const FileExt  = "m3u" 'Расширение обрабатываемых файлов 
Const FileIcon = "%COMMANDER_PATH%\SOFT\Winamp\winamp.exe" 'Файл иконок 
Const NumIcon  = 1 'Номер иконки в файле иконок 
Const Folder   = "%COMMANDER_PATH%\SOFT\Winamp\Playlists\" 'Обрабатываемая папка 
Const Bar      = "%COMMANDER_PATH%\BAR\Playlists.bar" 'Панель TC 
'=================================================================== 
Dim FSO, WSH, F, Text, i 
Set FSO = CreateObject("Scripting.FileSystemObject") 
Set WSH = CreateObject("WScript.Shell") 

i = 4 
For Each F In FSO.GetFolder(GetPath(Folder)).Files 
  If LCase(FSO.GetExtensionName(F.Path)) = LCase(FileExt) Then 
    i = i + 1 
    Text = Text & "button" & CStr(i) & "="  & FileIcon & "," & NumIcon & vbNewLine &_ 
                  "cmd"    & CStr(i) & "= ""%COMMANDER_PATH%\SOFT\Winamp\winamp.exe"" """  & F.Path & """" & vbNewLine &_ 
                  "iconic" & CStr(i) & "=0"                            & vbNewLine &_ 
                  "menu"   & CStr(i) & "="  & FSO.GetBaseName(F.Path)  & vbNewLine 
  End If 
Next 

Text = "[Buttonbar]"                                            & vbNewLine &_ 
       "Buttoncount=" & CStr(i)                                 & vbNewLine &_ 
       "button1=" & GetPath("%COMMANDER_PATH%\wcmicons.dll,15") & vbNewLine &_ 
       "cmd1="    & GetPath("%COMMANDER_PATH%\BAR\default.bar") & vbNewLine &_ 
       "iconic1=0"                                              & vbNewLine &_ 
       "button2="                                               & vbNewLine &_ 
       "iconic2=0"                                              & vbNewLine &_ 
       "button3=" & GetPath("%COMMANDER_PATH%\ICO\refresh.ico") & vbNewLine &_ 
       "cmd3="    & WScript.ScriptFullName                      & vbNewLine &_ 
       "iconic3=0"                                              & vbNewLine &_ 
       "menu3=Обновить"                                         & vbNewLine &_ 
       "button4="                                               & vbNewLine &_ 
       "iconic4=0"                                              & vbNewLine &_ 
       Text 

FSO.OpenTextFile(GetPath(Bar), 2, True).Write Text 

Set WSH = Nothing 
Set FSO = Nothing 
WScript.Quit 0 

Function GetPath(pPath) 
  GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath)) 
End Function
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Batya писал(а):
ackep писал(а):Какая-то нелепая кавычка
В конце строки кавычки не пропущены?!
Там нужна пара кавычек

Код: Выделить всё

"cmd"    & CStr(i) & "=""""%COMMANDER_PATH%\SOFT\Winamp\winamp.exe"" """  & F.Path & """""" & vbNewLine &_
Последний раз редактировалось Tol!k Сб фев 13, 2010 12:33, всего редактировалось 1 раз.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Всё работает, мои вопросы исчерпаны.
Tol!k, спасибо.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

ackep писал(а):Перепробовал и так, и сяк, не могу обнаружить хитрую кавычку-шпиона.
Сейчас сохранил в ручном режиме. Весьма странно нужная строка храниться в bar-файле.
Вообщем, нужно так:

Код: Выделить всё

                  "cmd"    & CStr(i) & "=""""%COMMANDER_PATH%\SOFT\Winamp\winamp.exe"" """ & F.Path & vbNewLine &_
Добавлено: Долго не отравлял. Опередили :)
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
ask-rus
Сообщения: 2077
Зарегистрирован: Вт ноя 10, 2009 14:06
Откуда: Russian Federation

Сообщение ask-rus »

Batya, с последним кодом тоже голяк - открывается проводник со скриптами о_О.
Остановился на Tol!k-овском. Много кавычек, но работает как часы.
«Минимализм - это кратчайший путь бесконечного стремления к идеалу»
«Не бойся, что не знаешь, - бойся, что не учишься» Китайская пословица
Ответить