alkisg Δημοσ. 24 Δεκεμβρίου 2004 Δημοσ. 24 Δεκεμβρίου 2004 Με αφορμή το http://www.insomnia.gr/vb3/showthread.php?t=96831 ανεβάζω έναν κώδικα που έγραψα για μαζική μετονομασία αρχείων σε Greeklish. Αποθηκεύετε τον κώδικα σαν RenToGreeklish.js και τον βάζετε στον SentTo φάκελο. Χρήση: επιλέγουμε τα αρχεία (είτε από explorer είτε με εύρεση) και κάνουμε δεξί κλικ->Send to->RenToGreeklish.js Περιορισμός: επειδή το command line δεν μπορεί να είναι πολύ μεγάλο, μόνο μερικές δεκάδες αρχεία μπορούν να γίνουν rename κάθε φορά. Για όσους ξέρουν javascript είναι εύκολο να αλλάξουν τον κώδικα ώστε να κάνουν ο,τιδήποτε άλλο θέλουν, όχι μόνο μετονομασία. Καλές γιορτές σε όλους. > function ToGreeklish(s) { var greek = "Ά*ΈΉΊ*Ό*ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ*ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ"; var greeklish = "A*EHI*O*YWiABGDEZHUIKLMNJOPR*STYFXCWIYaeniuabgdezn8iklmvjoprsstufxywiuouw"; var uniA = greek.charCodeAt(0); var uniw = greek.charCodeAt(greek.length - 1); var result; var i; result = ""; for (i = 0; i < s.length; i++) if (s.charCodeAt(i) >= uniA && s.charCodeAt(i) <= uniw && greek.charAt(s.charCodeAt(i) - uniA) != '*') result += greeklish.charAt(s.charCodeAt(i) - uniA); else result += s.charAt(i); return result; } var sh = WScript.CreateObject("Wscript.Shell"); var fso = WScript.CreateObject("Scripting.FileSystemObject"); var args = WScript.Arguments; var msg = "The following files were renamed:"; var i, c; cmdLineOK = args.length > 0; for (i = 0; cmdLineOK && i < args.length; i++) { if (!fso.FileExists(args(i))) { cmdLineOk = 0; WScript.Echo("File not found: " + args(i)); } } if (!cmdLineOK) { WScript.Echo( "Usage: RenToGreeklish filenames\n" + "RenToGreeklish.js renames greek-named (mp3???) files\n" + "with greeklish letters for devices that don't support Greek.\n" + "It's more convenient to put RenToGreeklish.js to the «Sent to» folder."); } else { for (i =0; i < args.length; i++) { msg += '\n' + args(i) + ' ==> ' + ToGreeklish(args(i)); fso.MoveFile(args(i), ToGreeklish(args(i))); } WScript.Echo(msg); } WScript.DisconnectObject(sh); WScript.DisconnectObject(fso); WScript.Quit();
Dionisos Δημοσ. 24 Δεκεμβρίου 2004 Δημοσ. 24 Δεκεμβρίου 2004 alkisg, eyxaristoume poly! Kales giortes, D.
alkisg Δημοσ. 25 Φεβρουαρίου 2005 Μέλος Δημοσ. 25 Φεβρουαρίου 2005 Κάτι είχε χαλάσει τον κώδικα (πιθανώς η μεταφορά από phpBB σε vBulletin του insomnia) και τα & είχαν γίνει & και τα < είχαν γίνει < κτλ κτλ... Τον ξανα-ανέβασα, πρέπει να είναι ΟΚ τώρα...
--b}{d-- Δημοσ. 25 Φεβρουαρίου 2005 Δημοσ. 25 Φεβρουαρίου 2005 Mια χαρά τώρα, thanks. Υπάρχει άραγε τρόπος να μπει η εντολή στο menu του right click; Ή να καλείται μέσω κάποιας συντόμευσης;
alkisg Δημοσ. 26 Φεβρουαρίου 2005 Μέλος Δημοσ. 26 Φεβρουαρίου 2005 Για κατευθείαν δεξί κλικ χωρίς το SendTo: > Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\Rename with RenToGreeklish\command] @="\"C:\\Documents and Settings\\Your name\\SendTo\\RenToGreeklish.js\" \"%1\"" Σώζεις τα παραπάνω σαν με όνομα "Μενού.reg" και με διπλό κλικ το εισάγεις στο μητρώο. Πλέον με δεξί κλικ πάνω σε αρχεία ή φακέλους εμφανίζεται η επιλογή "Rename with RenToGreeklish". Για συντόμευση: ναι, μπορείς να κάνεις συντόμευση (με παράμετρο %1) στο RenToGreeklish.js αλλά σε τι θα σε βοηθήσει; Αφού έτσι κι αλλιώς θα πρέπει να επιλέξεις τα αρχεία που θες για μετονομασία από τον explorer...
--b}{d-- Δημοσ. 26 Φεβρουαρίου 2005 Δημοσ. 26 Φεβρουαρίου 2005 Thanks για όλα. Πολλοί θα το εκτιμήσουνε. Όσον αφορά την συντόμευση είναι επειδή θέλω να τρέχω την εντολή μέσω mouse gesture (http://www.tcbmi.com/strokeit/). Αλλά κι έτσι εφόσον εμφανίζεται στο δεξί δεν υπάρχει πρόβλημα. Thanks και πάλι. /edit/ Έτσι εγκυκλοπαιδικά μήπως θα μπορούσες να εξηγήσεις πως μπαίνει η παράμετρος;
alkisg Δημοσ. 26 Φεβρουαρίου 2005 Μέλος Δημοσ. 26 Φεβρουαρίου 2005 Guys να 'στε καλά! @-[b}{d]-: (πω πω με τέτοιο username δεν βγάζει νόημα το @username: !!!) Πώς μπαίνει παράμετρος σε συντομεύσεις: σε μια οποιαδήποτε συντόμευση που έχεις ήδη δημιουργήσει, δεξί κλικ -> ιδιότητες -> καρτέλα "Συντόμευση" (shortcut) -> κουτί "Προορισμός" (target) -> στο τέλος του βάζεις και ένα "%1". Αυτό το %1 σημαίνει ότι αν περάσουμε μια παράμετρο στην συντόμευση, να περαστεί η ίδια παράμετρος και στο πρόγραμμα που φαίνεται στο κουτί προορισμός. Π.χ. αν η συντόμευσή μας είναι για τον media player και κάναμε έναρξη -> εκτέλεση -> wmplayer.lnk video.avi αυτό θα καλούσε τελικά wmplayer.exe video.avi Τέλος, όταν κάνουμε δεξί κλικ -> SendTo ή όταν χρησιμοποιούμε κάποιο άλλο πρόγραμμα σαν αυτό με τα gestures, η παράμετρος (το filename) συμπληρώνεται αυτόματα, εννοείται ότι δεν γράφουμε το όνομα του αρχείου με το χέρι...
~GaARa~ Δημοσ. 26 Φεβρουαρίου 2005 Δημοσ. 26 Φεβρουαρίου 2005 poli kalo~>alaksa kapies parametrous ke mporei na kanei aperioristo rename
--b}{d-- Δημοσ. 27 Φεβρουαρίου 2005 Δημοσ. 27 Φεβρουαρίου 2005 ~GaARa~ - Γιατί δεν μοιράζεις τον κώδικα μαζί μας; alkisg - To παρακάτω κείμενο το έχω επεξεργαστεί ξανά από χθες Εντελώς απρόοπτα σήμερα μου μετέφερε τα mp3 που είχα επιλέξει για rename στο root του σκληρού.Χρησιμοποίησα τον κώδικα σου "as is" και μέσω SendTo. Επειδή πάτησα βιαστικά το ΟΚ, το μόνο που πρόλαβα να δω στο confirmation window ήταν ότι είχε αναγνωρίσει τα Ελληνικά mp3 ως αλαμπουρνέζικα.
alkisg Δημοσ. 27 Φεβρουαρίου 2005 Μέλος Δημοσ. 27 Φεβρουαρίου 2005 Υ.Γ. ξέχασα να αναφέρω ότι ο κώδικας δίνεται χωρίς εγγύηση για καλή λειτουργία κτλ!!! Λοιπόν έχω πολύ καιρό να το χρησιμοποιήσω αλλά τέτοια (αλαμπουρνέζικα) δεν έπρεπε να βγάζει, γιατί χρησιμοποιεί unicode συναρτήσεις... Μήπως δεν είναι σωστά ρυθμισμένα τα ελληνικά? Κατά τα άλλα (εκτός από την μεταφορά) η μετονομασία έγινε σωστά?
--b}{d-- Δημοσ. 28 Φεβρουαρίου 2005 Δημοσ. 28 Φεβρουαρίου 2005 Θέλω να ζητήσω ταπεινά συγνώμη... ο κώδικας δουλεύει μια χαρά. Δοκιμαστικά είχα ανταλλάξει τους χαρακτήρες ανάμεσα σε greek και greeklish σώζωντας το αρχείο σαν RenToGreek.js (δεν το έτρεξα). Αλλά μόλις διαπίστωσα πως είχα αντικαταστήσει και το RenToGreeklish.js με το ίδιο (το οποίο και έτρεξα). Όσο για το αποτέλεσμα, αναμενόμενο: Sample F:\_Mp3\_ELLHNIKA\_Pop\1\NIKOS KARBELAS\(2002) Rompot -mp3pro-\06 - Υποσυνείδητο.mp3 Result F:\ΡΤΒε3ΡΤΊΑΑHΓΎΐΆΡΤΕδεΡ1ΡΓΎΐΔΘ ΐΆΗBΊΑΆΘΡ(2002) Ηδβεδι -βε3εηδ-Ρ06 - Υποσυνείδητο.βε3
alkisg Δημοσ. 28 Φεβρουαρίου 2005 Μέλος Δημοσ. 28 Φεβρουαρίου 2005 OK boy... κι ότι είχα αρχίσει να αμφιβάλλω για τις quick 'n' dirty λύσεις μου!!! ;-) Υ.Γ. για το RenToGreek.js: η σειρά που εμφανίζονται τα γράμματα είναι αυτή που ορίζει το πρότυπο Unicode. Με λίγα λόγια, για να κάνεις το RenToGreek.js θα πρέπει 1) να κάνεις έναρξη->εκτέλεση->charmap στα XP. Από εκεί θα δεις την σειρά των γραμμάτων όπως την καθορίζει το πρότυπο Unicode 2) το πινακάκι λοιπόν με τα ΑΡΧΙΚΑ ΓΡΑΜΜΑΤΑ (το greek στον αρχικό κώδικα) θα πρέπει να περιέχει τα γράμματα με τη σειρά που φαίνονται στο charmap. Αν πας λοιπόν στο charmap στην θέση 0386 θα δεις ότι υπάρχει το Ά και στην θέση 0387 υπάρχει το Έ κτλ. Ανάμεσα, στην 0387 δεν υπάρχει τίποτα, οπότε έβαλα ένα * το οποίο ο κώδικάς μου καταλαβαίνει ότι πρέπει να αγνοήσει. 3) άρα για να κάνεις το αντίθετο όπως ήθελες θα πρέπει να συμπληρώσεις ΟΛΑ τα γράμματα από A (αγγλικό - θέση 0041) μέχρι z (αγγλικό - θέση 007A). ΟΛΑ, δηλαδή και τα [, \, ], ^, _, ` που βρίσκονται ανάμεσα (τα οποία προφανώς στα ΤΕΛΙΚΑ ΓΡΑΜΜΑΤΑ θα τα έχεις ίδια, χωρίς αλλαγές - ή θα τα δηλώσεις σαν αστεράκια, *).
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.