Страница 1 из 2
Содержимое папки \Playlists (файлы *.m3u) в Playlists.bar
Добавлено: Чт фев 11, 2010 10:57
ask-rus
В папке d:\Total Commander\SOFT\Winamp\Playlists\ постоянно появляются новые плейлисты. Чтобы так же постоянно не добавлять их в кнопку
в виде меню "Playlists" ручками, необходимо автоматизировать.
d:\Total Commander\BAR\Playlists.bar
Добавлено: Чт фев 11, 2010 20:07
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
Добавлено: Пт фев 12, 2010 09:27
ask-rus
Всё радует, да только не создавалась бы "Стрелочка" с возвратом на default.bar, всё-таки у меня кнопка
в виде меню, где
d:\Total Commander\BAR\Default.bar вовсе никчему.
А, всё! Как только я прописал реальный путь к default.bar
d:\Total Commander\BAR\Default.bar
стрелочка исчезла из виду. Большое благодарю!
Добавлено: Пт фев 12, 2010 09:44
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
Добавлено: Пт фев 12, 2010 13:38
Batya
ackep писал(а):Const Bar = "%COMMANDER_PATH%\BAR\Playlists.bar" 'Панель TC
...
Oшибкa: Пyть нe нaйдeн
Поправил - в 42 строке надо вместо "Bar" написать "GetPath(Bar)".
Добавлено: Пт фев 12, 2010 14:24
ask-rus
А теперь чуток усложнить, чтобы плейлисты открывались определенным плеером, допустим, этот
Код: Выделить всё
%COMMANDER_PATH%\SOFT\Winamp\winamp.exe "d:\Total Commander\SOFT\Winamp\Playlists\Вахмурка.m3u"
Возможно, чтобы при нажатии на "Обновить" (понимаю, это запуск скрипта) пути в кнопках были через %COMMANDER_PATH%, нежели "d:\Total Commander\"?
Добавлено: Пт фев 12, 2010 18:58
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"?
А зачем? Скрипт ведь всегда корректно поменяет при его запуске. Просто, например, для кнопки перехода на родительскую панель (та самая "Стрелочка") необходимо прописывать развернутый путь, иначе она будет отображаться.
Добавлено: Пт фев 12, 2010 19:07
ask-rus
Batya писал(а):Просто, например, для кнопки перехода на родительскую панель (та самая "Стрелочка") необходимо прописывать развернутый путь, иначе она будет отображаться.
В твоем случае со скриптом, то да. В обычном случае у меня там кнопки-менюшки... "стрелочки" не отображаются, хотя %COMMANDER_PATH% повсюду.
Ещё раз спасибо.
Фaйл нe нaйдeн!

Какая-то нелепая кавычка:)
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
Добавлено: Сб фев 13, 2010 10:15
ask-rus
Перепробовал и так, и сяк, не могу обнаружить хитрую кавычку-шпиона.
Фaйл нe нaйдeн!
К тому же нет завершающей кавычки после .m3u
" в кнопке...
Добавлено: Сб фев 13, 2010 11:44
Batya
ackep писал(а):Какая-то нелепая кавычка
Ты полностью строку поменял?
В конце строки кавычки не пропущены?!
& F.Path & """" & vbNewLine &_
Добавлено: Сб фев 13, 2010 12:08
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
Добавлено: Сб фев 13, 2010 12:26
Tol!k
Batya писал(а):ackep писал(а):Какая-то нелепая кавычка
В конце строки кавычки не пропущены?!
Там нужна пара кавычек
Код: Выделить всё
"cmd" & CStr(i) & "=""""%COMMANDER_PATH%\SOFT\Winamp\winamp.exe"" """ & F.Path & """""" & vbNewLine &_
Добавлено: Сб фев 13, 2010 12:32
ask-rus
Всё работает, мои вопросы исчерпаны.
Tol!k, спасибо.
Добавлено: Сб фев 13, 2010 15:04
Batya
ackep писал(а):Перепробовал и так, и сяк, не могу обнаружить хитрую кавычку-шпиона.
Сейчас сохранил в ручном режиме. Весьма странно нужная строка храниться в bar-файле.
Вообщем, нужно так:
Код: Выделить всё
"cmd" & CStr(i) & "=""""%COMMANDER_PATH%\SOFT\Winamp\winamp.exe"" """ & F.Path & vbNewLine &_
Добавлено: Долго не отравлял. Опередили

Добавлено: Вс фев 14, 2010 09:13
ask-rus
Batya, с последним кодом тоже голяк - открывается проводник со скриптами о_О.
Остановился на Tol!k-овском. Много кавычек, но работает как часы.