Letöltött filenevek átnevezése
A data.hu-ról (de más szerverről is) letöltött filenevek ékezet nélküli karaktereket tartalmazhat. Ha át szeretnéd nevezni a file-okat ékezetesekre (vagy tetszés szerintire), megteheted egyesével is, de az alábbi EXCEL-Macro futtatásával is.
Ha a filenév egy sorszámot is tartalmaz, akkor egy FOR-ciklusba helyezhető, és S1-től S2-ig átnevezi egy adott mappában a sorszámozott és a megfelelő szerkezetű fileneveket. A lenti Macro a "File" nevű munkalapon dolgozik.
Sub FileÁtnevezés()
' A filenevek átnevezése a PAT$ nevű mappában történik.
' A régi név szerkezete: FR$="\..RNE$..\xxx\..RNV$..\"+KIT$
' Az új név szerkezete: FU$="\..UNE$..\xxx\..UNV$..\"+KIT$
Sheets("File").Select: Cells("B16").Select: ii = 0
PAT$ = "F:\SOROZATOK\A szerelem nevében": ChDir (PAT$): ' Az aktuális útvonal, meghajtóval.
RNE$ = "A_szerelem_neveben_": RNV$ = "": ' " by Ani001": ' "": ' = ".tvrip"
UNE$ = "A szerelem nevében ": UNV$ = "": ' " bármilyen": ' ""
KIT$ = ".avi": ' Ez a file kiterjesztése vagy típusa
S1 = 1: S2 = 170: SS = 3: ' Az SS - A számjegyek darabszáma, az 'xxx' helyén.
Cells(256 * 5 + 3).Value = PAT$
Cells(256 * 5 + 6).Value = SS: Cells(256 * 7 + 6).Value = S1: Cells(256 * 9 + 6).Value = S2
S$ = "'" + Right$("00" + Right$(Str$(S1), Len(Str$(S1)) - 1), SS): Cells(256 * 7 + 7).Value = S$
S$ = "'" + Right$("00" + Right$(Str$(S2), Len(Str$(S2)) - 1), SS): Cells(256 * 9 + 7).Value = S$
For i = S1 To S2: ii = ii + 1
S$ = Right$("00" + Right$(Str$(i), Len(Str$(i)) - 1), SS): Cells(256 * 7 + 1).Value = i
FR$ = PAT$ + "\" + RNE$ + S$ + RNV$ + KIT$: Cells(256 * 7 + 3).Value = FR$
FU$ = PAT$ + "\" + UNE$ + S$ + UNV$ + KIT$: Cells(256 * 9 + 3).Value = FU$
Name FR$ As FU$: ' Ez a filenév átnevező utasítás.
Next i
Cells(12 * 256 + 2).Value = ii: Cells(12 * 256 + 3).Value = "db file átnevezve."
End Sub
Magyarázó szövegek.
A feltételnül beírandó macro-program. Az egész bemásolható.
Elhagyható adatkezelések. Ekkor nem használja a munkalapot.
Feltöltőknek ajánlott filenév-átnevezések
A data.hu egy ideje a feltöltött file-ok neveiből a magyar ékezetes karaktereket nem helyettesíti a neki megfelelő "ékezetlenekkel", hanem egyszerűen kiveszi. Így a feltölött filenevek értelmezése bizonyos esetekben bizonytalan. Akiket érdekel, azoknak ajánlok erre egy megoldást.
Az adott mappában lévő fileneveket a Total Commander segítségével egy szöveges file-ba íratjuk. A TC-t az adott mappára állítjuk és kijelöltetjük az összes file-t, majd a vágólapra másoltatjuk. (Mindkét funkció a 'Kijelölés' menüpontban van.) Majd az adott mappában létrehozunk egy szöveges file-t (pl.:) "Filenevek listája" névvel. Ebbe bemásoljuk a vágólap tartalmát. Ezt a listát módosíthatjuk, törölhetünk belőle sorokat, de ekkor az általunk, a listából törölt file-okat nem fogja átnevezni. A lista első sorába beszúrással beírjuk a sorok (filenevek) számát. (Ez elhagyható, de akkor az értékét be kell írni a macroba, az SS változó helyére, és az SS változó olvasását és írását el kell hagyni!) A macro futtatásakor létrehoz egy másik file-t, amelyben az ékezetmentes filenevek lesznek.
[Korábban ilyen volt a data.hu filenév-átalakítása.]
Feltöltés után visszaállítható az eredeti, ékezetes karaktereket is tartalmazó filenevek a másik macro futtatásával.
Az EXCEL-Macro programlistái az alábbiak:
Sub Ékezetmentesítés()
Sheets("File").Select: PAT$ = "F:\SOROZATOK\Twin Peaks": ChDir (PAT$): ' A teljes útvonal!
FF$ = "Twin Peaks ": Cells(256 * 16 + 3).Value = PAT$ + "\" + FF$
Cells(256 * 17 + 3).Value = ""
' Az FF$ a filenévből elhagyható, az megkülönböztetésre szolgál, ha több is van egy helyen.
' Megnyitja az első file-t olvasásra, a másikat írásra.
Open PAT$ + "\" + FF$ + "Filenevek listája.txt" For Input Access Read As 1
Open PAT$ + "\" + FF$ + "Filenevek ékezetmentesen.txt" For Output Access Write As 2
Input #1, SS: Print #2, SS: ii = 0: ' Az elsőből olvassa, a másikba írja a darabszámot.
For i = 1 To SS
Input #1, AA$: UU$ = AA$
While Right$(AA$, 4) <> ".avi": ' Addig olvas amíg az .avi részt nem találja.
' Itt most csak .avi típusú file-ok vannak, de típusok felsorolhatók.
Input #1, AA$: UU$ = UU$ + ", " + AA$ (**) A vessző után szóköz van!
Wend
RR$ = UU$: HH = Len(UU$)
For j = 1 To HH - 4
X = 0: A$ = Mid$(UU$, j, 1)
If A$ = "á" Then X = 1: B$ = "a": ' Az alábbi helyettesítés egyértelmű.
If A$ = "é" Then X = 1: B$ = "e"
If A$ = "í" Then X = 1: B$ = "i"
If A$ = "ó" Or A$ = "ö" Or A$ = "ő" Then X = 1: B$ = "o"
If A$ = "ú" Or A$ = "ü" Or A$ = "ű" Then X = 1: B$ = "u"
If A$ = "Á" Then X = 1: B$ = "A"
If A$ = "É" Then X = 1: B$ = "E"
If A$ = "Í" Then X = 1: B$ = "I"
If A$ = "Ó" Or A$ = "Ö" Or A$ = "Ő" Then X = 1: B$ = "O"
If A$ = "Ú" Or A$ = "Ü" Or A$ = "Ű" Then X = 1: B$ = "U"
If X = 1 Then Mid$(UU$, j, 1) = B$: ' Az adott helyen kicseréli a karaktert.
Next j
Print #2, UU$: ' A másik file-ba beírja a módosított filenevet, feltétel nélkül.
RR$ = PAT$ + "\" + RR$: UU$ = PAT$ + "\" + UU$: ' Az útvonalat a filenév elé írja.
If RR$ <> UU$ Then: ' Ha volt csere, akkor végrehajtja az átnevezést.
ii = ii + 1: Name RR$ As UU$: ' Ez a filenév átnevező utasítás.
End If
Next i
Cells(19 * 256 + 2).Value = ii: Cells(12 * 256 + 3).Value = "db file átnevezve, az ékezetes betűk ékezetmentesítésével."
Close 1: Close 2
End Sub
(**) Következetesen kell alkalmazni az eredeti filenév írásánál a 'vessző' utáni azonos számú szóközt.
(**) Ha az eredeti filenév 'vessző(ke)t' is tartalmaz, akkor következetesnek kell lenni abban, hogy a 'vessző' után mindig azonos számú szóköz (SPACE) legyen. A nulla is egy szám, ha nulla, akkor nincs szóköz. A 'vessző' a file olvasáskor azt jelenti, hogy az adott beolvasást nem a sor végéig kell olvasnia, hanem a 'vesszőt' megelőző karakterig. A filenév így darabolódna és helytelen filenév kerülne kiolvasásra. Ezekben az esetekben mesterségesen fel kell építeni az eredeti filenevet.
================================================================================================
Sub Ékezetvisszaállítás()
Sheets("File").Select: PAT$ = "F:\SOROZATOK\Twin Peaks": ChDir (PAT$): ' A teljes útvonal!
FF$ = "Twin Peaks ": Cells(256 * 17 + 3).Value = PAT$ + "\" + FF$
' Az FF$ a filenévből elhagyható, az megkülönböztetésre szolgál, ha több is van egy helyen.
' Mindkét file-t olvasásra nyitja meg.
Open PAT$ + "\" + FF$ + "Filenevek listája.txt" For Input Access Read As 1
Open PAT$ + "\" + FF$ + "Filenevek ékezetmentesen.txt" For Input Access Read As 2
Input #1, SS: Input #2, SS: ii = 0: ' Mindkettőből kiolvassa a darabszámot.
For i = 1 To SS: EE$ = "": MM$ = ""
Input #1, AA$: EE$ = AA$: ' Az eredeti fileneveket olvassa be.
While Right$(AA$, 4) <> ".avi"
Input #1, AA$: EE$ = EE$ + ", " + AA$ (**) A vessző után szóköz van!
Wend
Input #2, BB$: MM$ = BB$: ' A módosított fileneveket olvassa be.
While Right$(BB$, 4) <> ".avi"
Input #2, BB$: MM$ = MM$ + ", " + BB$ (**) A vessző után szóköz van!
Wend
MM$ = PAT$ + "\" + MM$: EE$ = PAT$ + "\" + EE$: ' Az útvonalat a filenév elé írja.
If MM$ <> EE$ Then: ' Ha volt csere, akkor végrehajtja a visszanevezést.
ii = ii + 1: Name MM$ As EE$: ' Ez a filenév (át/vissza)nevező utasítás.
End If
Next i
Cells(19 * 256 + 2).Value = ii: Cells(12 * 256 + 3).Value = "db file átnevezve, az ékezetes betűk visszaállításával."
Close 1: Close 2
End Sub
Az EXCEL használatának megtanítására nem vállalkozom, de...
A megyarázatokon túl mellékelek egy EXCEL-file-t, amelyben a fenti három macro is megtalálható, az Alt-F8 billentyűvel kiválasztható egy macro, majd a 'Szerkesztés' gombra kattintva előjön a VBA szerkesztő felület.
A file linkje: http://data.hu/get/5450461/Filenevek.xls
A Melrose Place sorozatának letöltött file-jainak átnevezésére is külön EXCEL-állományt tettem fel. A RAR-file tartalmazza az átnevezéshez szükséges két adatfile-t. Itt is rövid megjegyzések vannak a MACRO magyarázatánál.
A file linkje: http://data.hu/get/5647011/Melrose_Place_-_Filenevek_atnevezesehez.rar
|