VBA: Im Ordner bei allen Dateinamen jeweils das 1. Wort löschen

Hallo,
Hilfe ist gefragt:
In einem Ordner „Sammlung“ mit hunderten von Dateien, deren Dateinamen sämtlich mit „Schreiben vom“ beginnen, möchte ich das "Schreiben vom " löschen. Meine rudimentären VBA-Kenntnisse reichen nicht aus. Kennt jemand einen Code?

hi,

Geht es primär darum, dass es VBA sein muss, oder ist das einmalige Umbenennen das Ziel?

Das wäre mit nem simplen
rename "Schreiben vom*" "//////////////*"
deutlich schneller zu erreichen.

grüße
lipi

2 Like

Hallo lipi,
VBA ist völlig gleichgültig, ich habe ohnehin nur kleinste Anfängerkenntnisse. Mir kommt es darauf an, dass ich das Umbenennen nicht ca. 600 mal manuell machen muss. Kann man - kannst Du - Deinen Gedanken in einen Code für mich präzisieren, den ich nur zu starten brauch?
Dank und Gruß
WD

hi,

Rename sollte klar sein
Das erste ist die Zeildatei, die mit dem Text beginnt, * steht wie üblich für beliebiges.

Das letzte bestimmt den neuen Namen. / entfernt dabei je ein Zeichen vom Dateinamen.

der ist so wie er da steht fertig, falls deine Beschreibung nix vergessen hat.
Als Batch oder direkt über cmd ausführen.
Vorher testen und/oder ne Sicherheitskopie anlegen bietet sich dennoch an.

grüße
lipi

Nichts für ungut, aber ich glaube, in diesem Fall musst du das deutlich genauer ausführen.:blush:

Hallo, Eure Mühe ist bisher leider umsonst. Ich komme aus der reinen Textverarbeitung und bringe den Code nicht zum laufen. Batch sagt mir nichts und cmd kenne ich nur aus meinen Anfangskenntnissen in VBA. Was nun? Zunächst erst einmal herzlichen Dank!

Das dachte ich mir.

Mit dem Begriff „Taskleiste“ kannst du etwas anfangen? Das ist die Leiste, die in Windows am unteren Rand zu sehen ist. Ich weiß nicht, wie es bei dir aussieht, bei mir ist ganz links das Windows-Symbol und direkt rechts daneben ein Eingabefeld mit einer Lupe und dem Text „Zur Suche Text hier eingeben“. Wenn ich dort „cmd“ (ohne Anführungszeichen!) eingebe, sehe ich das:

Wenn das bei dir so ähnlich ist, also wenn oben auch Eingabeaufforderung App steht, klickst du das an, und es geht ein (schwarzes) Konsolenfenster auf. Dort musst du mit dem Befehl cd zu dem Verzeichnis navigieren, in dem sich deine Dateien „Schreiben vom …“ befinden, und dort das von lipi erwähnte
rename "Schreiben vom*" "//////////////*"
eingeben.

Wenn du dich mit dem Befehl cd auch nicht auskennst, musst du erstmal die Eingabeaufforderung mit cmd starten, mir dann sagen, was nach C:\ steht, und mir dann zusätzlich das genaue Verzeichnis (also mit komplettem Pfad) schreiben, in dem sich der Ordner „Sammlung“ befindet.

1 Like

Möglichkeit 1 wie @Christa beschrieben hat.

Möglichkeit 2: den Ordner mit den Dateien erstmal irgend wo hin kopieren, damit nichts verloren geht.
Dann einfach den Editor oder Notepad öffnen und die obige Zeile einfügen. Mit ‚speichern unter…‘ abspeichern, als Namen aber „Umbenennen.bat“ eingeben. Wichtig ist .bat anstelle von .txt

Danach kannst du die Datei im Ordner mit Doppelklick ausführen oder in den Ordner verschieben, wo immer du sie brauchst.
Das erspart dir das navigieren in der Eingabeaufforderung.

grüße
lipi

Hi,

eins interessiert mich doch: Was genau bewirken die Schrägstriche im zweiten Teil des Befehls rename? Ich kenne noch MS-DOS 5.0, aber diese Syntax ist mir noch nicht begegnet.

Viele Grüße
Christa

hi,

ist mehr bug using.

Technically the / is not functioning as a wildcard. Rather it is doing a simple character substitution following the c target mask rule. But then after the substitution, the REN command recognizes that / is not valid in a file name, and strips the leading / slashes from the name. REN gives a syntax error if it detects / in the middle of a target name.

grüße
lipi

1 Like

It’s not a bug, it’s a feature! :smiley:

1 Like

Hallo Christa und lipi,
heute Nachmittag habe ich geschwitzt und tatsächlich Erfolg gehabt. In meinem Alter genießt man auch kleine Erfolgserlebnisse! Euch beiden wird das wer-weiss-was-Große Verdienstkreuz mit Stern und Schulterband verliehen! Herzlichen Dank!

2 Like

Freut mich, dass es geklappt hat, auch wenn dich das etwas Schweiß gekostet hat! :wink:

Schüchterne Zusatzfrage (ich würde meine VBA-Kenntnisse ein klein wenig stabilisieren): Wie würde der entsprechende VBA-Code aussehen? Der Ordner enthält 952 Dateien.

hi,

Ne Variante wäre: (https://www.mrexcel.com/board/threads/using-excel-vba-to-rename-files-in-directory.423149/)

Sub Main()
Dim MyFolder As String
Dim MyFile As String
Dim a As Integer
MyFolder = "D:\test\"
MyFile = Dir(MyFolder & "Schreiben vom *.*")
a = 0
Do While MyFile <> ""
    a = a + 1
    rem ThisComponent.Sheets(0).getCellByPosition(0, a).String = MyFile
    rem ThisComponent.Sheets(0).getCellByPosition(2, a).String = Right(MyFile,Len(MyFile)-14)
    
    Name MyFolder & MyFile As MyFolder & Right(MyFile,Len(MyFile)-14)
    
    MyFile = Dir
Loop
End Sub

grüße
lipi

Moin,

wenn ich einen Commandfile habe, der das tut, was er soll, dann rufe ich ihn per VBA aus meiner Anwendung (Excel, Word, Access, …) heraus auf. Wüsste in diesem Fall aber nicht, wozu das Einbetten gut sein sollte.

Die Frage, wie ein Problem in VBA zu lösen wäre, ist immer ein wenig heikel. Erfahrungsgemäß sind die einfachsten Lösungen die besten! Im Fallschirmsport gibt es den Spruch „Der schafft es, einen Palstek in die Reißleine zu springen“.

Gruß
Ralf