2016-07-10 6 views
0

Ich schreibe gerade ein Skript, das Dateinamen umbenennt, indem der vollständige Pfad der Datei als Präfix für den Dateinamen verwendet wird. Dies funktioniert gut mit GetAbsolutePathName von FileSystemObject. Ich löschte die Eingabeaufforderung, indem Sie die Right()-Funktion und Replace() verwenden, um den Backslash mit - zu ersetzen.Umbenennen von Dateinamen mit abgeschnittenen Ordnernamen

Bis jetzt funktioniert alles gut. Um jedoch zu lange Dateinamen aufgrund langer Pfade und vieler Unterordner zu vermeiden, möchte ich jeden Ordnernamen in der Dateinamen-Zeichenfolge nach 4 Zeichen abschneiden. Ich frage mich nur, was wäre der eleganteste Weg.

Identifizieren Sie die Position aller - Speichern sie in einem Array und eine Schleife, die die Position berechnet, wo abgeschnitten wird, scheint ein bisschen kompliziert zu sein und wäre wahrscheinlich langsam, denke ich. Weiß jemand eine elegantere Idee?

+3

Willkommen bei Stackoverflow! Können Sie bitte Ihre Frage mit Ihrem Aufwand wie Code oder etwas, so dass Leute Ihr Problem früh bekommen und Ihnen helfen können? Vielen Dank! – JRSofty

+0

Ich betrachte die Frage als ausreichend klar, auch ohne Code. Der OP beschrieb, was er zu erreichen versuchte, und wie er darüber nachdenkt, und fragte, ob es einen besseren Weg gäbe als was er denkt. –

+0

Vielen Dank für den Kommentar. Wie Ansgar sagte, war ich neugierig auf einige andere Ideen, werde aber versuchen, beim nächsten Mal ein wenig mehr auf die Frage einzugehen. – Herbie245

Antwort

0

Die einfachste Art und Weise zu tun, was Sie den ursprünglichen Pfad Split bei Schrägstriche, gestutzt jedes Element auf 4 Zeichen Tops mit der Left Funktion, dann Join das modifizierte Array zurück in eine Zeichenfolge wollen.

path = "Users\someuser\Documents" 

arr = Split(path, "\") 
For i=0 To UBound(arr) 
    arr(i) = Left(arr(i), 4) 
Next 
prefix = Join(arr, "-") 'result: "User-some-Docu" 

Beachten Sie, dass die FileSystemObject sowohl \ und / als Pfadtrenn akzeptiert, so kann es eine gute Idee, ba / zu \ zuerst canonicalize.

+0

Danke, Ansgar, das ist eine ziemlich elegante Art und Weise. Ich werde versuchen, wie es mit einer großen Anzahl von Dateien funktioniert. Wahrscheinlich werde ich Rekursion über die Ordnerstruktur versuchen. Prost, – Herbie245

Verwandte Themen