Автор Тема: Групповое переименование  (Прочитано 44630 раз)

0 Пользователей и 9 Гостей просматривают эту тему.

Оффлайн Itar-Tass

  • Новичок
  • *
  • Сообщений: 35
Групповое переименование
« : 30 Января 2010, 19:35:40 »
Нужен скрипт или плагин ,который массово(а не по одному) переименовывал бы файлы на харде в вид
переведенное название.avi(ну или другое расширение)
или
переведенное название(оригинальное название).avi(если название совпадает[для русских фильмов] то без скобки).В общем по шаблону.

Названия чтобы брал из описания(из базы).

Нечто похожее есть в аналогичной программе Sur Video Catalog
но там только по одному файлу.
А надо оптом.

Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Групповое переименование
« Ответ #1 : 31 Января 2010, 09:34:48 »
Вот очень присоединяюсь к вопросу, очень нужно подобное, и еще бы с возможностью создавать для файла фильма свою, отдельную папку. То, есть, например все фильмы лежат а корне папки films а при переименовании они "упаковывались" в одноимённую по шаблону названия файла.

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Групповое переименование
« Ответ #2 : 01 Февраля 2010, 00:03:35 »
Есть в списке TODO так, что будет когда-нибудь
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн Itar-Tass

  • Новичок
  • *
  • Сообщений: 35
Re: Групповое переименование
« Ответ #3 : 01 Февраля 2010, 12:51:47 »
Есть в списке TODO так, что будет когда-нибудь
А как ускорить процесс?

Оффлайн Itar-Tass

  • Новичок
  • *
  • Сообщений: 35
Re: Групповое переименование
« Ответ #4 : 01 Февраля 2010, 12:55:14 »
Вот очень присоединяюсь к вопросу, очень нужно подобное, и еще бы с возможностью создавать для файла фильма свою, отдельную папку. То, есть, например все фильмы лежат а корне папки films а при переименовании они "упаковывались" в одноимённую по шаблону названия файла.
Я это делаю скриптом в тотал коммандер - легким движением руки...
http://forum.wincmd.ru/viewtopic.php?t=11199

Там же есть скрипт раскидывания по папкам по первой букве имени файла или папки.
http://forum.wincmd.ru/viewtopic.php?p=57600&highlight=#57600

Реально очень помогает.

Но вот файл то надо для начала переименовать...
« Последнее редактирование: 01 Февраля 2010, 13:33:18 от Itar-Tass »

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Групповое переименование
« Ответ #5 : 01 Февраля 2010, 18:24:31 »
Есть в списке TODO так, что будет когда-нибудь
А как ускорить процесс?

Если конечно закажете доработку с предварительной оплатой, то я конечно могу выделить дополнительное время, но это будет не дёшево. Лучше просто дождаться версии 1.0 (предположительно)
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Групповое переименование
« Ответ #6 : 07 Февраля 2010, 14:30:24 »
Есть в списке TODO так, что будет когда-нибудь
А как ускорить процесс?

Если конечно закажете доработку с предварительной оплатой, то я конечно могу выделить дополнительное время, но это будет не дёшево. Лучше просто дождаться версии 1.0 (предположительно)
А масштабы "не дёшево" можно узнать? Может оно того стоит, что-бы не ждать.

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Групповое переименование
« Ответ #7 : 07 Февраля 2010, 14:40:02 »
На вскидку 60 EUR. Тогда могу добавить фичу в течении 2х недель.
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн Itar-Tass

  • Новичок
  • *
  • Сообщений: 35
Re: Групповое переименование
« Ответ #8 : 07 Марта 2010, 07:29:54 »
На вскидку 60 EUR. Тогда могу добавить фичу в течении 2х недель.
Там уже все к 1.0 идет.
20 евро не могут спасти гиганта мысли?

Оффлайн nostra

  • Администратор
  • *****
  • Сообщений: 2749
    • Personal Video Database
Re: Групповое переименование
« Ответ #9 : 07 Марта 2010, 14:55:58 »
Цитировать
20 евро не могут спасти гиганта мысли?

Я думаю, торг здесь неуместен :)
Мы уже работаем над постановлением по углублению конструктивных мер, принятых в результате консолидации

Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Групповое переименование
« Ответ #10 : 07 Марта 2010, 17:48:16 »
А я в извращенной форме (и с очень конкретными, специфическими именами файлов) смог 7 ТБ авишек переименовать и в итоге приклеить к PVD. На досуге выложу свой вариант, может кому и подойдет. Всё заняло всего один день и все файлы имеют теперь такой вид: Русское название (год)/Оригинальное_Название_(год)(озвучка)(качество).расширение При помощи скрипта одного, написанного под мои нужды. Основное, что нужно, это заполненная база PVD к которой подцеплены все файлы, одно пользовательское поле с озвучкой, например: (one);(two);(multi);(multi_d);(multi_z) - одноголосый, двухголосый, многоголосый, многоголосый дубляж, многоголосый закадровый и одно заполненное поле качество, например: (dvdrip);(hdrip);(tvrip);(satrip). И если у фильма не один файл, а более, то обязательно должен быть такой вид: любое название (CD1).расширение. Вот. Если есть возможность иметь указанные данные, то дело займет несколько минут. Ну или если кто шарит в програмировании думаю можно и скрипт поправть просто. Впринципе, вот код, сразу говорю, я в этом ничего не шарю, мне друг по быстрому накидал:
Set fso = CreateObject("Scripting.FileSystemObject")
Set ADOConn=CreateObject("ADODB.Connection")
ADOConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\films_catalogs\PVD\Content\scripts\data.mdb;"
ADOConn.Open
Set QueryResult=CreateObject("ADODB.recordset")
Set Cmd = CreateObject("ADODB.Command")
Cmd.ActiveConnection = ADOConn
QueryResult.Open "Select  * from films where movienum>0", ADOConn,3

QueryResult.MoveFirst
While not QueryResult.EOF


AllPaths=QueryResult.fields("Path").value
AllPathsNew=""
SepPos=Instr(1,AllPaths,"|")
MovieNum=cint(QueryResult.fields("movienum").value)
while SepPos>0
CurrentPath=mid(AllPaths,1,SepPos-1)
AllPaths=Mid(AllPaths,SepPos+1,Len(AllPaths)-SepPos)

FolderName=QueryResult.fields("Title").value

FbdnSym=Instr(1,FolderName,"/")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"/")
wend

FbdnSym=Instr(1,FolderName,"\")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"\")
wend
FbdnSym=Instr(1,FolderName,"|")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"|")
wend

FbdnSym=Instr(1,FolderName,"?")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"?")
wend

FbdnSym=Instr(1,FolderName,"*")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"*")
wend

FbdnSym=Instr(1,FolderName,":")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"-"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,":")
wend

FbdnSym=Instr(1,FolderName,">")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,">")
wend

FbdnSym=Instr(1,FolderName,"<")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"<")
wend

FbdnSym=Instr(1,FolderName,"""")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"'"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"""")
wend

NewPath=mid(CurrentPath,1,Instr(4,CurrentPath,"\"))+FolderName+" ("+cstr(QueryResult.fields("Year").value)+")"

if not FSO.FolderExists(NewPath) then
set f=FSO.CreateFolder(NewPath)
end if
SerNum=""
for i=1 to 1000
if instr(1,CurrentPath,"(CD"+cstr(i)+")")> 0 then
SerNum="(CD"+cstr(i)+")"
i=1000
end if
next
j=Len(CurrentPath)
while mid(CurrentPath,j,1)<>"." and j>0
j=j-1
wend


FileNameNew=QueryResult.fields("Original Title").value+"_("+cstr(QueryResult.fields("Year").value)+")"+"("+cstr(QueryResult.fields("Voice").value)+")"+"("+cstr(QueryResult.fields("Quality").value)+")"+SerNum+mid(CurrentPath,j,Len(CurrentPath)-j+1)

FolderName=FileNameNew

FbdnSym=Instr(1,FolderName,"/")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"/")
wend

FbdnSym=Instr(1,FolderName,"\")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"\")
wend
FbdnSym=Instr(1,FolderName,"|")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"|")
wend

FbdnSym=Instr(1,FolderName,"?")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"?")
wend

FbdnSym=Instr(1,FolderName,"*")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"*")
wend

FbdnSym=Instr(1,FolderName,":")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"-"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,":")
wend

FbdnSym=Instr(1,FolderName,">")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,">")
wend

FbdnSym=Instr(1,FolderName,"<")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"<")
wend

FbdnSym=Instr(1,FolderName,"""")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"'"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"""")
wend

FbdnSym=Instr(1,FolderName," ")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"_"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName," ")
wend

FileNameNew=FolderName
NewPath=NewPath+"\"+FileNameNew

AllPathsNew=AllPathsNew+NewPath+"|"

if CurrentPath<>NewPath then
if fso.FileExists(CurrentPath) then
set CurrentFile=fso.GetFile(CurrentPath)
CurrentFile.Move NewPath
else
msgbox "Файл "+CurrentPath+" не найден"
end if
END IF


SepPos=Instr(1,AllPaths,"|")

wend


CurrentPath=AllPaths
FolderName=QueryResult.fields("Title").value

FbdnSym=Instr(1,FolderName,"/")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"/")
wend

FbdnSym=Instr(1,FolderName,"\")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"\")
wend
FbdnSym=Instr(1,FolderName,"|")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"|")
wend

FbdnSym=Instr(1,FolderName,"?")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"?")
wend

FbdnSym=Instr(1,FolderName,"*")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"*")
wend

FbdnSym=Instr(1,FolderName,":")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"-"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,":")
wend

FbdnSym=Instr(1,FolderName,">")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,">")
wend

FbdnSym=Instr(1,FolderName,"<")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"<")
wend

FbdnSym=Instr(1,FolderName,"""")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"'"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"""")
wend

NewPath=mid(CurrentPath,1,Instr(4,CurrentPath,"\"))+FolderName+" ("+cstr(QueryResult.fields("Year").value)+")"

if not FSO.FolderExists(NewPath) then
set f=FSO.CreateFolder(NewPath)
end if
SerNum=""
for i=1 to 1000
if instr(1,CurrentPath,"(CD"+cstr(i)+")")> 0 then
SerNum="(CD"+cstr(i)+")"
i=1000
end if
next
j=Len(CurrentPath)
while mid(CurrentPath,j,1)<>"." and j>0
j=j-1
wend


FileNameNew=QueryResult.fields("Original Title").value+"_("+cstr(QueryResult.fields("Year").value)+")"+"("+cstr(QueryResult.fields("Voice").value)+")"+"("+cstr(QueryResult.fields("Quality").value)+")"+SerNum+mid(CurrentPath,j,Len(CurrentPath)-j+1)

FolderName=FileNameNew

FbdnSym=Instr(1,FolderName,"/")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"/")
wend

FbdnSym=Instr(1,FolderName,"\")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"\")
wend
FbdnSym=Instr(1,FolderName,"|")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"|")
wend

FbdnSym=Instr(1,FolderName,"?")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"?")
wend

FbdnSym=Instr(1,FolderName,"*")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"*")
wend

FbdnSym=Instr(1,FolderName,":")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"-"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,":")
wend

FbdnSym=Instr(1,FolderName,">")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,">")
wend

FbdnSym=Instr(1,FolderName,"<")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"<")
wend

FbdnSym=Instr(1,FolderName,"""")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"'"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName,"""")
wend

FbdnSym=Instr(1,FolderName," ")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"_"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(1,FolderName," ")
wend

FileNameNew=FolderName

NewPath=NewPath+"\"+FileNameNew
AllPathsNew=AllPathsNew+NewPath

FolderName=AllPathsNew

FbdnSym=Instr(1,FolderName,"'")
While FbdnSym>0
FolderName=Mid(FolderName,1,FbdnSym-1)+"''"+Mid(FolderName,FbdnSym+1,len(FolderName)-FbdnSym)
FbdnSym=Instr(FbdnSym+2,FolderName,"'")
wend
AllPathsNew=FolderName

Cmd.CommandText = "Update films set NewPath='"+AllPathsNew+"' where movienum="+cstr(MovieNum)
Cmd.Execute

if CurrentPath<>NewPath then
if fso.FileExists(CurrentPath) then
set CurrentFile=fso.GetFile(CurrentPath)
CurrentFile.Move NewPath
else
msgbox "Файл "+CurrentPath+" не найден"
end if
END IF


QueryResult.MoveNext
Wend


' msgbox AllPathsNew
Для работы нужен Access. Детали, если и правда кому понадобится напишу, а так... действительно несколько гиморный способ, но рабочий.

Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Групповое переименование
« Ответ #11 : 07 Марта 2010, 18:47:01 »
А кстате, Itar-Tass, давайте "третьего" найдем и по 20ке скинемся? Как вам?

Оффлайн Itar-Tass

  • Новичок
  • *
  • Сообщений: 35
Re: Групповое переименование
« Ответ #12 : 09 Марта 2010, 05:14:00 »
Я за

Оффлайн Itar-Tass

  • Новичок
  • *
  • Сообщений: 35
Re: Групповое переименование
« Ответ #13 : 09 Марта 2010, 05:17:07 »
Кстати а зачем вы в название перевод и качество запихиваете?

Я наоборот заколебался от этого чистить.
Есть же тэги в ави.
Да и потоки NTFS никто не отменял.(Там вообще размер не ограничен)

Оффлайн NewSky

  • Гуру
  • ****
  • Сообщений: 842
Re: Групповое переименование
« Ответ #14 : 09 Марта 2010, 12:45:55 »
Кстати а зачем вы в название перевод и качество запихиваете?

Я наоборот заколебался от этого чистить.
Есть же тэги в ави.
Да и потоки NTFS никто не отменял.(Там вообще размер не ограничен)
"Запихиваю", что-бы знать :) Тэги... а вот чем их туда запихивать? Да и когда 6000 фильмов... не до запихивания (а хочется). Про потоки NTFS вообще ничего не понятно... что за потоки, какое это имеет отношение к именам файлов? Где "там" размер не ограничен? Короче лично я ничего воообще не понял.

Ждём, кто "третьим" будет :)