Script Request

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

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

Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Количество и размер - это запросто. А вот что касается стиля, тут нужен ActiveX компонент, который умеет читать стили MP3. Ну, это можно найти, я думаю. А потом, что писать, если стили в файлах одной папки разные окажутся?

А, кстати, почему именно нужен скрипт? Скорее всего эти файлы с инфой - это результат работы какой-то программы, работающей с MP3, каталогизатора или типа того.
noklip
Сообщения: 22
Зарегистрирован: Ср сен 17, 2008 19:08

Сообщение noklip »

Все папки оформленны одним стандартом - в одной папе один жанр. Вот только программ я таких не находил(( слышал что такие файлы скриптами делаются. на крутых серверах с музыкой стоит фрибсд и там все по скриптам. но думаю и в тотале можно такое сотворить.. этот файлик полезен для подбития общей статистики и для создания сайта, чтобы связать страничку штмл с альбомами через него. а как хотябы размер и количество файлов записать в его название и вообще как его создать)?
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Вот, например, скрипт, быстрая переделка другого моего скрипта для создания плейлистов (кстати их можно и объединить).

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

'  File:         MakeMP3report.vbs  (2-nd edition)
'  Description:  Создает инфо-файл в текущей и в каждой 
'                в нее вложенной папке, если найдет в них файлы MP3 
'  Installation: Создайте кнопку на панели TC 
'                Команда: "диск:\путь\к\файлу\MakeMP3report.vbs" 
'                Параметры: "%P" 
'(c)2008, Volniy  
  
Option Explicit 
   Dim Fso, Cnt 
   Set Fso = CreateObject("Scripting.FileSystemObject") 

   If Fso.FolderExists(WScript.Arguments(0)) = False Then 
      MsgBox "Указана неверная директория!", vbCritical, "Ошибка" 
   Else 
      Call ScanFolderForMP3(Fso.GetFolder(WScript.Arguments(0))) 
      MsgBox   "Информационных  файлов создано: " & Cnt, vbInformation, "Завершено" 
   End If 

   Set Fso = Nothing 
   WScript.Quit 

Sub ScanFolderForMP3(curFolder) 
   Dim SF 
   For Each SF In curFolder.SubFolders 
      ScanFolderForMP3 SF 
   Next 
   Call MakeInfoFile(curFolder) 
End Sub 

Sub MakeInfoFile(curFolder) 
   Dim F, fExt, Sz, CntMP3 
   'On Error Resume Next 
   For Each F In curFolder.Files 
      fExt = UCase(Fso.GetExtensionName(F.Name)) 
      If fExt = "MP3" Then 
         CntMP3 = CntMP3 +1 
         Sz = Sz + F.Size 
      End If 
   Next 
   If cntmp3 Then 
     '[размер мп3 файлов_количество мп3 файлов]
     Sz = FormatNumber(Sz/(1024*1024),2,-1, ,0)
     Set F = curFolder.CreateTextFile("[" & sz & "mb_" & CntMP3 & "fl]", True) 
         F.Close: Cnt = Cnt + 1 
   End If 
End Sub
Последний раз редактировалось Volniy Чт сен 18, 2008 22:55, всего редактировалось 1 раз.
noklip
Сообщения: 22
Зарегистрирован: Ср сен 17, 2008 19:08

Круто !!

Сообщение noklip »

О что надо. вот только как сделать чтобі размер в метрах віводило? я исправил "[" & sz/1000000 & "mb_" & CntMP3 & "f]" но выводит в формате 10,585468mb(( хотелось бы 10,58мб
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

ОК. Изменил скрипт. Замени весь блок MakeInfoFile ибо там один косячок обнаружился.
noklip
Сообщения: 22
Зарегистрирован: Ср сен 17, 2008 19:08

Сообщение noklip »

ОПлучается если в папке несколько мп3 то выдает размер последнего файла.. :( :(
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Volniy писал(а):Замени весь блок MakeInfoFile ибо там один косячок обнаружился.
И для кого я это писал, а?
noklip
Сообщения: 22
Зарегистрирован: Ср сен 17, 2008 19:08

Сообщение noklip »

ну это я понял только вот не знаю что писать)
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

"Ну вы, блин, даете" (с) Полковник

Просто замени у себя весь скрипт, полностью. Я ведь его отредактировал в своем первом посте, там теперь исправленный вариант.
noklip
Сообщения: 22
Зарегистрирован: Ср сен 17, 2008 19:08

Сообщение noklip »

:oops: :oops: :oops: спасибо!
gumanok
Сообщения: 8
Зарегистрирован: Вт янв 27, 2009 14:31

А если усложнить?

Сообщение gumanok »

Мне эта тема очень помогага до определенного этапа. Теперь нужно запихать файл на несколько уровней поглубже.

Т.е. файлы
ded_moroz_krasny_nos_01.jpg
ded_moroz_06.jpg
varvara_krasa_dlinnaya_kosa_02.jpg

нужно раскидать по папкам:
ded/moroz/krasny/nos/ded_moroz_krasny_nos_01.jpg
ded/moroz/ded_moroz_06.jpg
varvara/krasa/dlinnaya/kosa/varvara_krasa_dlinnaya_kosa_02.jpg

А в идеале название папки с заглавной буквы, а имя файла обрезать до номера. т.е.

Ded/Moroz/Krasny/Nos/01.jpg
Ded/Moroz/06.jpg
Varvara/Krasa/Dlinnaya/Kosa/02.jpg

Проблема еще в том, что глубина разная.
Не подскажите, как быть?
zakkazak
Сообщения: 4
Зарегистрирован: Пт янв 30, 2009 13:33

Сообщение zakkazak »

Создание UNDO (отменить) для reg-файла.
наверное сложно будет написать такой скрипт, но был бы очень полезен. Перед тем как применить reg-файл , содается для него Undo-reg-файл для страховки.
PS. Скрипт будет применяться для рег-файлов среднего размера.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Очень коротко отвечу: это нереально. Вы неверно предствляете себе ундо-файл. Он должен восстановить содержимое Реестра до применения рег-файла. Для этого нужно оценить изменение содержимого реестра. Как? Есть только один более-менее реальный способ: снятие снимков реестра до и после операции, приводящей к изменениям в реестре, и их последующее сравнение.

IMHO: Скрипт не может создать undo только по содержимому рег-файла.(точка)
gumanok
Сообщения: 8
Зарегистрирован: Вт янв 27, 2009 14:31

Сообщение gumanok »

Я пытался разбить процесс на несколько этапов. Раскидать в папки с названиями до первого прочерка мне удалось строкой.

DashInName = Instr(FileName, "_")

В скрипте Бати в этой теме. А на следующий уровень сдвинуть папки не получается. Т.е. до второго прочерка.

DashInName = Instr(FileName, "_", 2)

Вроде, все правильно написано.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

gumanok писал(а):Вроде, все правильно написано.
Не правильно. Для поиска позиции следующего символа _

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

DashInName = Instr(DashInName + 2, FileName, "_")
А вообще тут проще использовать функцию Split, типа так:

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

AllDashes = Split(FileName, "_")
'MsgBox AllDashes(0) & vbCr & AllDashes(1)
Ответить