pixelsklave
Goto Top

VBScript zum umbennen von Ordnerinhalt

Hallo,

evtl. kann mir jemand weiterhelfen da ich nichts passendes gefunden habe und meine VB Kenntnisse sich in Grenzen halten.
Ich würde gerne mit einen Script eine Menge an Bilder umbennen die sich in Unterordner befinden.

Z.B.

Hauptordner: Bilder
Unterordner z.B.: 014845 -nicht vortlaufend sprich können unterschiedliche Nummern sein.
Inhalt: 1-10 Bilder mit unterschiedlichen Namen.

Ziel wäre wenn man das Script ausführt das alle Bilder die in den Unterordnern sind auf den Namen des Ordners angepasst werden worin sie sich befinden sprich -

Bilder im Ordner 014845 sollen dann Umbenannt werden in (Bildname) 014845_0, 014845_1 usw. die Nummern vortlaufend anhand der Anzahl wieviele Bilder im Ordner sind.

Da es evtl. sehr schwer ist die zu realisieren würde mir auch ein Script reichen das wenn man es in den gewünschten Ordner kopiert und ausführt
einfach ein Popup öffnet und nach den Namen fragt wie die Dateien heißen sollen und danach automatisch die Nummern vortlaufend anhängt.

Kann mir hierbei jemand behilflich sein?

Content-ID: 362920

Url: https://administrator.de/contentid/362920

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

dnsxyz
dnsxyz 30.01.2018 um 17:30:15 Uhr
Goto Top
Also ich würde jetzt einfach mal Adobe Bridge oder Photoshop vorschlagen, womit eine Stapelverarbeitung möglich ist die sowas kann. Schätze aber das es auch andere Möglichkeiten gibt, falls du die Programme nicht zur Hand hast.
135333
135333 30.01.2018 um 18:42:14 Uhr
Goto Top
Set fso = CreateObject("Scripting.Filesystemobject")  
for i = 0 to wscript.Arguments.Count -1
     ProcessFolder fso.GetFolder(wscript.arguments(i))
Next

Sub ProcessFolder(objFolder)
     cnt = 1
     For each file in objFolder.Files
         File.Name = objFolder.Name & "_" & Right("00" & cnt,3) & "." & fso.GetExtensionName(file.Name)  
         cnt = cnt + 1
     Next
     For each subfolder in objFolder.Subfolders
         ProcessFolder subfolder
     Next
End Sub
Gruß snap
Pixelsklave
Pixelsklave 30.01.2018 um 22:05:47 Uhr
Goto Top
Vielen Dank ich teste es gleich morgen und melde mich face-smile vielen lieben Dank
emeriks
emeriks 31.01.2018 aktualisiert um 08:40:13 Uhr
Goto Top
Hi,
was im Script von @135333 vielleicht noch fehlt, ist eine Kontrolle, ob der Name der Datei nicht doch schon dem gewünschten Format entspricht und wenn nein, ob dann der neue Name nicht schon vergeben ist.

E.
Pixelsklave
Pixelsklave 31.01.2018 um 09:10:26 Uhr
Goto Top
kannst du das einarbeiten? ps. das script funktioniert nicht oder ich mache etwas falsch. fehler spuckt es nicht aus aber es ändert auch keine namen? habe es in den gewünschten ordner kopiert und ausgeführt aber es passiert nichts
135333
135333 31.01.2018 aktualisiert um 09:39:10 Uhr
Goto Top
Zitat von @Pixelsklave:

ps. das script funktioniert nicht oder ich mache etwas falsch. fehler spuckt es nicht aus aber es ändert auch keine namen? habe es in den gewünschten ordner kopiert und ausgeführt aber es passiert nichts
Du machst es falsch.
Du musst bei diesem Skript den Ordner dem Skript als Parameter übergeben
cscript script.vbs "c:\ordner"  
Oder auch mehrere
cscript script.vbs "c:\ordner" "C:\ordner2"  
Oder eben den Ordner auf das Skript ziehen.

Zur Prüfung ob Dateien existieren als Tipp für dich selbst damit du auch noch was zu tun hast: fso.FileExists()

Und tschö.
Pixelsklave
Pixelsklave 31.01.2018 um 09:45:54 Uhr
Goto Top
ah vielen dank es funktioniert. habe jetzt nur noch ein problem. das script fängt jetzt bei 01 an sprich xxxxx_01.
geht es auch das es bei 0 beginnt und nie Nummerierung dann nicht mit 01 02 03 durchführt sondern 0 1 2 3??
135333
135333 31.01.2018 aktualisiert um 09:50:00 Uhr
Goto Top
Kein Problem, setze cnt = 0 und entferne das Right("00" &cnt,3) und ersetze es durch cnt.
File.Name = objFolder.Name & "_" & cnt & "." & fso.GetExtensionName  
Fertsch.
Pixelsklave
Pixelsklave 31.01.2018 um 09:48:28 Uhr
Goto Top
habs hab einfach den cnt geändert auf 1

File.Name = objFolder.Name & "_" & Right("0" & cnt,1) & "." & fso.GetExtensionName(file.Name)
135333
135333 31.01.2018 aktualisiert um 09:54:36 Uhr
Goto Top
Nein, das ist falsch. S.o.
Pixelsklave
Pixelsklave 31.01.2018 um 09:59:52 Uhr
Goto Top
hi, sorry das ich mich so anstelle haha. aber da beginnt er jetzt bei 1 statt 0. und bei meiner änderung auf cnt,1 macht er es genau wie ich es will spuckt aber fehler aus.

File.Name = objFolder.Name & "_" & Right("0" & cnt,1) & "." & fso.GetExtensionName(file.Name)

Zeile 9
Zeichen 10
Die Datei ist bereits vorhanden
Code: 800A003A
135333
135333 31.01.2018 aktualisiert um 10:04:07 Uhr
Goto Top
Ist doch klar, liest du meine Posts nicht???? Ich habe dir geschrieben das deine Variante falsch ist. Wie du es richtig machst steht in meinem Kommentar oben!
Man man man, beschäftige dich doch erst mal ausgiebig was der Code macht bevor du agierst...

Das wird mir jetzt doch zu dämlich, ich bin raus.
Pixelsklave
Pixelsklave 31.01.2018 um 10:22:17 Uhr
Goto Top
hey sorry das hab ich doch aber wie gesagt ich kenn mich damit zu wenig aus. ich wollte dich jetzt nicht verärgern ich habe deine andere variante ja getestet. und wieso man das jetzt dämlich nennen muss verstehe ich nicht da ich dich ja nicht angegriffen habe. vorhin stand in deinen kommentar nur S.o und nicht nein ist falsch.
emeriks
emeriks 31.01.2018 um 10:28:35 Uhr
Goto Top
Er hat nicht Dich dämlich genannt! Genau lesen!
Pixelsklave
Pixelsklave 31.01.2018 um 10:29:16 Uhr
Goto Top
so jetzt hats geklappt. vielen lieben dank für deine geduld. ich gebe dir recht erstmal richtig lesen. ich bitte um verzeihung. aber tue dir selber einen gefallen und stell dich nicht so an wenn ein anfänger es nicht gleich checkt. danke nochmal für deine zeit.
Pixelsklave
Pixelsklave 31.01.2018 um 10:30:44 Uhr
Goto Top
ja hast recht face-smile aber ich bin in vb ganz frisch unterwegs und wenn man da mal auf den schlauch steht einfach bissle mehr geduld wäre cool. würde ich ihn kennen würde ich ihn jetzt ne packung merci schenken