Ein Wort aus dem Namen einer Datei entfernen mit einer Batch-Datei?
Hallo c:
Ich muss in einem Ordner (und seinen Unterordnern) ein bestimmtes Wort aus den Namen der Dateien entfernen. Die Dateien sind jpg Bilder und haben alle einen Namen + ein "_bearbeitet-1" dahinter. Dieses "_bearbeitet-1" sollte aber aus allen Bildernamen verschwinden. Er würde zu lange dauern alle von selber zu entfernen also würde ich das Problem gerne mit einer Batch-Datei lösen.
Ich habe schon in anderen Foren gesucht aber die meisten wollen die ganzen Dateien löschen - das will ich nicht.
Ich wäre sehr froh, wenn mir jemand helfen könnte.
3 Antworten
Wie fit bist Du denn mit Batch-Programmierung?
Wenn Du Dir zutraust, eine Stapeldatei zu schreiben, lad Dir 4DOS herunter und befasse Dich da mit
"FILE LISTS" und "VARIABLE FUNCTIONS"
Bei den Variable Functions hilft Dir die Funktion "@INSTR", um den gesuchten zu löschenden Bestandteil des Dateinamens zu extrahieren und zu entfernen.
Wenn die Startpostition des zu löschenden Strings innerhalb des Dateinamens variabel ist, weil der vorhergehende Namensteil unterschiedliche Längen haben kann, nimm "@RTRIM"
Hat der zu löschende Teil immer den gleichen Inhalt, kannst Du auch "@STRIP" nehmen.
Etwas "SET" gehört natürlich dazu.
Ich habe mich erst glaub ich vor ca. 2 Tagen damit befasst? Also ich bin WIRKLICH neu in diesem Bereich. 4DOS kenne ich leider nicht o: Ich werde es mir mal anschauen. Danke schön für diese Antwort c:
Ich würde dafür VBScript verwenden. Damit hast du mehr Kontrolle als mit klassischem Batch.
Dim C_PFAD_ARBEITSVERZEICHNIS
C_PFAD_ARBEITSVERZEICHNIS = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName))) Dim fso Dim oVerzeichnis Dim oDateiliste Dim sDateiNeu Dim sToFind : sToFind = "_bearbeitet-1" Set fso = CreateObject("Scripting.FileSystemObject") Set oVerzeichnis = fso.GetFolder(C_PFAD_ARBEITSVERZEICHNIS) Set oDateiliste = oVerzeichnis.Files For Each oDatei in oDateiliste sDateiNeu = Replace(oDatei.Name, sToFind, "") if not fso.FileExists(C_PFAD_ARBEITSVERZEICHNIS & sDateiNeu) then _ oDatei.Name = sDateiNeu Next MsgBox "Fertig"
Speichere den Quelltext in eine Datei mit der Endung vbs und lege sie ins Verzeichnis mit den Bildern.
Es müsste so etwas geben wie GetSubfolders oder so ähnlich.
Ich vermute, ich muss irgendwelche Sachen ersetzen oder? o: Wenn ja welche? :3 Die, die du gross geschrieben hast? Oder gar nichts? :x
Danke schön, dass du dir auch Zeit genommen hast, das alles zu schreiben ^-^
Du musst nichts ersetzen, das macht das Skript ;P
Das Skript löscht "_bearbeitet-1" aus allen Dateinamen des Verzeichnisses, in dem das Skript liegt.
Wow ich habe es gerade versucht, es funktioniert! Danke schön :3 Falls du noch etwas Zeit oder Lust hast, könntest du mit ein paar dieser Befehle kurz erklären? o: z.B. dieses "Dim" - wofür das gut ist ^-^
Dim brauchst du nicht, wenn du mit Pfusch leben kannst ;)
Es kündigt an: "Es folgt eine Variable, die unten verwendet werden will."
Bei sauberer Programmierung würde man ganz am Anfang des Skripts "Option Explicit" schreiben. Damit würde man sich selbst die Pflicht auferlegen, jede Variable, die verwendet wird, zuvor mit Dim bekannt zu geben.
Aber die Befehle und Objekte lassen sich auch sehr leicht ergoogeln ;)
Probiere es mit VBS. Damit hab ich es auch mal gemacht, ist einfacher und variabler.
Was müsste man am Code ändern bzw. hinzufügen, damit auch alle Unterordner einer Datei betroffen sind?