Herbert Leitner 10 Geschrieben 13. Dezember 2007 Melden Teilen Geschrieben 13. Dezember 2007 Hallo! Ich kenne mich mit VBS nicht so besonders aus und suche einen Script, der recursiv (Subdirektories) für alle Dateien so viele führende Nullen einfügt, wie ich benötige (per Parameter) damit die Dateienamen alle gleich lang sind. Ich denke, daß sowas nicth so schwer ist, schaffe es alleine aber nicht! Gruß und Dank! Herbert Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 13. Dezember 2007 Melden Teilen Geschrieben 13. Dezember 2007 auch wenn's nicht sonderlich schwer ist, in ein paar Minuten ist solch ein Skript trotzdem nicht geschrieben. Schau dir mal pfrank an (google), das ist durch "Regular Expressions" recht mächtig und erfüllt evtl. deine Anforderung. cu blub Zitieren Link zu diesem Kommentar
pacobay 10 Geschrieben 19. Dezember 2007 Melden Teilen Geschrieben 19. Dezember 2007 @Herbert Leitner Ist das noch ein aktuelles Problem? ' Die Aufgabe könnte mich interessieren. ' Grundsätzlich geht das technisch) ' und ich denke ich bekäme das auch hin ' habe diesbezüglich mal meinen Fundus geprüft ' habe da brauchbare Teile ' Müßte ich sinnvoll zusammenbauen ' Ist also im Wesentlichen von dem Aufwand abhängig ' Auch der tiefere Sinn ist mir noch verborgen ' Schönheit / Übersicht ??? ' Aber ist ja fast egal ' Eher interessant unter Motivationsgesichtspunkt ' ' Mache solche Sachen eher als Übung für mich ' so eine Art Hobby aber wie wahrscheinlich ' jeder im EDV-Bereich habe auch ich ein Zeitproblem ' ' Und wie mein Vorredner (blub) schon erwähnte, ' nicht so sonderlich schwer aber etwas Zeit geht da schon drauf. ' ' Auf jeden Fall hätte ich da im Vorfeld einige Fragen ' Um vieviele Dateien handelt es sich in etwa ' wie tief verschachtelt ' spielt performance ein wesentliche Rolle ' nach welchen Kriterien wieviele Nullen ' als Vorgabe ?? Try and error?? ' ' wie soll mit dem problem max.Pfadlänge (x<250 ca)umgegangen werden ' ist das eine oneway Aktion ' sprich einmal Nullen hinzufügen und fertig ' oder auch irgendwann wieder führende Nullen entfernen ' Zugriffrechte sicher gegeben oder prüfroutinen nötig ' ' Kann ich davon ausgehen dass bevor das script verwendet wird ' eine vernüftige Datensicherung gemacht wird? ' Sorry natürlich teste ich so was vorher ' aber Murphy Law gilt immer und überall ' '---------- ' ' meine zur Zeit angedachte Vorgehensweise ' '1. rekursives auslesen der Verzeichnissstruktur ' wegschreiben der Fiele in txt mit trennzeichen ' Felder: lfdNr;Pfad;filename;längePfad (vomRoot);länge Filename; ' ergänzt gegebenenfalls um prüfkennzeichen ' ' 2. Schritt auswertung der txt nach ??? ' sofern hier klare gesetzmäßigkeiten gäbe dann viel einfacher ' dann könnte direkt der neue filenamensvorschlag in 1 generiert werden ' ' 3. entweder direkt umwandeln durch verwendung der txt und oder ergänzung ' der datei und dann umwandeln ' ' beim abändern wären wahrscheinlich ein änderungslog sinnvoll ' wäre mir zumindest bei größerer fileanzahl sonst zu unsicher ' ' ciao pacobay Zitieren Link zu diesem Kommentar
Herbert Leitner 10 Geschrieben 20. Dezember 2007 Autor Melden Teilen Geschrieben 20. Dezember 2007 Hallo! Dank Dir für die umfangreichen Antwort. Gleich vorab. Ich hatte gehofft, daß ich auf die schnelle im Intenret einen Script oder ein Programm finden würde das sowas macht. Der Grund ist eher optisch. Der Windows Explorer ab XP mag ja mit der Anzeige der richtigen Reihenfolge klar kommen, andere Programme wie der Total Commander nicht. Wenn folgende Dateien vorhanden sind 8.jpg, 9.jpg.10.jpg,11.jpg, dann sortiert der Windows Explorer "richtig" (kann man abschalten, ich weiß), alle anderen Programme aber nicht. Da kommt dann 10, 11, 8, 9. Spätestens dann, wenn der Inhalt der Verzeichnisse unüberschaubar wird (ist bei mir der Fall) dann ist die Suche und das Navigieren ein Graus. Die Geschwindigkeit des Scripts spielt keine Rolle, weil das Umbenennen eine einmalige Sache ist. Wie gesagt, es geht da um 10.000e von Unterverzeichnissen, deshalb war die Rekursion wichtig. In erster Linie liegen da Bilder (Digicams seit 11 Jahren), etwas Musik, Texte, ... Den Aufwand für die Rekursion hatte ich mir schlimmer vorgestellt. Ich kann Rekursion zwar erklären aber ich verstehe nicht wie das geht! (ist komisch, ich weiß). Das war aber dann noch die einfachste Übung. Ich habe den Script jetzt in mühevoller Arbeiten und zwei durchzechten Nächten (jeweils bis ca. 04:00) selbst in VBScript erstellt. Viel Arbeit ist die Parameterübergabe und Prüfung auf Gültigkeit und aub Plausibilität gegangen. Der Script heißt jetzt y-Rename.vbs und hat volgende Parameter y-Rename <Verzeichnis> [<minLänge> ] Verzehnis ist das Startverzeichnis minLänge: Ist der Dateiname kürzer als minLänge dann werden 0er (Null) aufgefüllt s: Subdirectories = Rekursion Ich habe versucht, den Script so abszusichern, daß alle Fehleingaben geprüft werden und das Script keinen Schaden anrichtet, wenn was passiert. Das Script schreibt eine Protokolldatei für die Fehlermeldungen und eine Undo-Datei. Ist das Ergebnis nicht so wie es sein sollte, dann kann das rückgängig gemacht werden. Die Protokolldatei ist notwendig weil es sein kann, daß eine Datei nicht umbenannt werden kann, weil der "Ziel"-Name bereits vorhanden ist. Das ist z.B. der Fall, wenn ich die Dateinamen auf 4 Zeichen verlängere und folgende zwei Dateien vorhanden sind. 1.txt, 0001.txt Solche Sachen werden ausgefilter. Dazu habe ich noch verschiedene Korrekturen implementiert: - ungültige/ungeliebte Zeichen werden entfernt - Umlaute werden ersetzt durch U-e - mehrere Punkte oder Leerzeichen die hintereinander sind werden entfernt und auch Kombinationen davon - Punkte und Leerzeichen vorne und hinten werden entfernt Alles in allem bin ich da jetzt an die 30 - 40 Stunden davor gesessen und habe fast zwei Nächte durch gemacht. Es macht aber Spaß, zu sehen was VBScript alles kann. Ich bin davon begeistert - und kenne kaum 0,1% davon. Die Länge des Scripts ist an die 400 Zeilen. Von der Funkton von vom Namen habe ich mich etwas inspierierne lassen von x-Rename von der PC-Welt. Das Ding ist genial - leider fehlt dort die Möglichkeit, am Anfang der Dateinamen eine bestimmte Anzahl von Zeichen zu löschen. Wie gesagt, wenn ich geahnt hätte, wie viel Arbeit das ist, dann hätte ich vermutlich erst gar nicht angefangen! Gruß und Dank! Herbert Zitieren Link zu diesem Kommentar
pacobay 10 Geschrieben 21. Dezember 2007 Melden Teilen Geschrieben 21. Dezember 2007 Hallo HL, ist denfinitiv mehr als der übliche Hello World-Anfang! Ich finde es besonders gut, dass Du gleich von Anfang an mit Logs und Fehlerabfangfunktionen arbeitest. :thumb1: Respekt! Würde das script mal gerne sehen. PM? Sofern Du noch Probleme mit den führenden Nullen hast, das Zauberwort nach dem Du suchen mußt ist : Regular Expressions bzw. Die Replace Methode des RegExp Objektes Infos findest Du u.A. in der MS WSH Hilfedatei (bei MS downloadbar vgl. hilfreiche Tools unten ) etwas primitiver wäre etwas in der Art Do until Left(zuWandelnderAusdruck,1)<>"0" part12=right(part12,len(Part12)-1) loop Eine alternative Vorgehnsweise zu Nullen hinzufügen wäre möglicherweise gewesen: Neu durchzunummerieren. Nach dem Motto: Alles +10000 Also aus 8.jpg wird 10008.jpg und aus 100.jpg würde 10100.jpg etc Damit wäre dein Sortierungsproblem gelöst und für zukünftige Anpassungen hast du ganzzahlige Werte (integer) die viel einfacher zu verarbeiten sind. Wie auch immer, Haupsache Du hast etwas, mit dem Du leben kannst. Viel Erfolg bei Deinen nächsten Schritten pacobay Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.