View previous topic :: View next topic |
Author |
Message |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Thu Sep 18, 2008 01:23 Post subject: |
|
|
Количество и размер - это запросто. А вот что касается стиля, тут нужен ActiveX компонент, который умеет читать стили MP3. Ну, это можно найти, я думаю. А потом, что писать, если стили в файлах одной папки разные окажутся?
А, кстати, почему именно нужен скрипт? Скорее всего эти файлы с инфой - это результат работы какой-то программы, работающей с MP3, каталогизатора или типа того. |
|
Back to top |
|
 |
noklip
Joined: 17 Sep 2008 Posts: 22
|
(Separately) Posted: Thu Sep 18, 2008 03:09 Post subject: |
|
|
Все папки оформленны одним стандартом - в одной папе один жанр. Вот только программ я таких не находил(( слышал что такие файлы скриптами делаются. на крутых серверах с музыкой стоит фрибсд и там все по скриптам. но думаю и в тотале можно такое сотворить.. этот файлик полезен для подбития общей статистики и для создания сайта, чтобы связать страничку штмл с альбомами через него. а как хотябы размер и количество файлов записать в его название и вообще как его создать)? |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Thu Sep 18, 2008 17:21 Post subject: |
|
|
Вот, например, скрипт, быстрая переделка другого моего скрипта для создания плейлистов (кстати их можно и объединить).
Code: | ' 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 |
Last edited by Volniy on Thu Sep 18, 2008 22:55; edited 1 time in total |
|
Back to top |
|
 |
noklip
Joined: 17 Sep 2008 Posts: 22
|
(Separately) Posted: Thu Sep 18, 2008 22:28 Post subject: Круто !! |
|
|
О что надо. вот только как сделать чтобі размер в метрах віводило? я исправил "[" & sz/1000000 & "mb_" & CntMP3 & "f]" но выводит в формате 10,585468mb(( хотелось бы 10,58мб |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Thu Sep 18, 2008 22:57 Post subject: |
|
|
ОК. Изменил скрипт. Замени весь блок MakeInfoFile ибо там один косячок обнаружился. |
|
Back to top |
|
 |
noklip
Joined: 17 Sep 2008 Posts: 22
|
(Separately) Posted: Fri Sep 19, 2008 00:07 Post subject: |
|
|
ОПлучается если в папке несколько мп3 то выдает размер последнего файла..  |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Fri Sep 19, 2008 00:59 Post subject: |
|
|
Volniy wrote: | Замени весь блок MakeInfoFile ибо там один косячок обнаружился. |
И для кого я это писал, а? |
|
Back to top |
|
 |
noklip
Joined: 17 Sep 2008 Posts: 22
|
(Separately) Posted: Fri Sep 19, 2008 01:22 Post subject: |
|
|
ну это я понял только вот не знаю что писать) |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Fri Sep 19, 2008 12:20 Post subject: |
|
|
"Ну вы, блин, даете" (с) Полковник
Просто замени у себя весь скрипт, полностью. Я ведь его отредактировал в своем первом посте, там теперь исправленный вариант. |
|
Back to top |
|
 |
noklip
Joined: 17 Sep 2008 Posts: 22
|
(Separately) Posted: Fri Sep 19, 2008 18:53 Post subject: |
|
|
спасибо! |
|
Back to top |
|
 |
gumanok
Joined: 27 Jan 2009 Posts: 8
|
(Separately) Posted: Tue Jan 27, 2009 20:07 Post subject: А если усложнить? |
|
|
Мне эта тема очень помогага до определенного этапа. Теперь нужно запихать файл на несколько уровней поглубже.
Т.е. файлы
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
Проблема еще в том, что глубина разная.
Не подскажите, как быть? |
|
Back to top |
|
 |
zakkazak
Joined: 30 Jan 2009 Posts: 4
|
(Separately) Posted: Sat Jan 31, 2009 16:43 Post subject: |
|
|
Создание UNDO (отменить) для reg-файла.
наверное сложно будет написать такой скрипт, но был бы очень полезен. Перед тем как применить reg-файл , содается для него Undo-reg-файл для страховки.
PS. Скрипт будет применяться для рег-файлов среднего размера. |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Sat Jan 31, 2009 20:54 Post subject: |
|
|
Очень коротко отвечу: это нереально. Вы неверно предствляете себе ундо-файл. Он должен восстановить содержимое Реестра до применения рег-файла. Для этого нужно оценить изменение содержимого реестра. Как? Есть только один более-менее реальный способ: снятие снимков реестра до и после операции, приводящей к изменениям в реестре, и их последующее сравнение.
IMHO: Скрипт не может создать undo только по содержимому рег-файла.(точка) |
|
Back to top |
|
 |
gumanok
Joined: 27 Jan 2009 Posts: 8
|
(Separately) Posted: Sun Feb 01, 2009 01:41 Post subject: |
|
|
Я пытался разбить процесс на несколько этапов. Раскидать в папки с названиями до первого прочерка мне удалось строкой.
DashInName = Instr(FileName, "_")
В скрипте Бати в этой теме. А на следующий уровень сдвинуть папки не получается. Т.е. до второго прочерка.
DashInName = Instr(FileName, "_", 2)
Вроде, все правильно написано. |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Sun Feb 01, 2009 02:29 Post subject: |
|
|
gumanok wrote: | Вроде, все правильно написано. |
Не правильно. Для поиска позиции следующего символа _
Code: | DashInName = Instr(DashInName + 2, FileName, "_") |
А вообще тут проще использовать функцию Split, типа так:
Code: | AllDashes = Split(FileName, "_")
'MsgBox AllDashes(0) & vbCr & AllDashes(1) |
|
|
Back to top |
|
 |
|