Dateinamen nach Kriterium umbenennen
#11
Hallo Ralf,

Aus Prinzip sollte man den Einsatz von On Error auch auf den Part beschränken, wo man einen Abbruch vermeiden will.

Also in diesem Fall mall ganz eng
Code:
For ...
  On Error Resume Next
  Name ...
  On Error Goto 0
Next

Man braucht es aber hier gar nicht. Mit dem Dir-Befehl kannst Du zuvor prüfen, ob eine Datei existiert.

Code:
For ...
  If Dir(LW:\Pfad\Datei)<>"" Then ...
    Name ...
  End If
Next


Der Vollständigkeit halber, auch wenn es nun hier nicht genutzt wird - im Filesystem-Object gibt es fileexists.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#12
Hallo Nora,

machs' doch einfach so:

Code:
Sub Dateien_Umbennen()
'Alle Dateien mit gerader Nummer umbenennen
Dim fs As Object, fVerz As Object
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.GetFolder("C:\Sammlung")

For Each fDatei In fVerz.Files

If CInt(StrReverse(Mid(StrReverse(fDatei.Name), 4, 3))) Mod 2 = 0 Then
Name "C:\Sammlung\" & fDatei.Name As "C:\Sammlung\Neu_" & Right(fDatei.Name, 7)
End If
   
Next fDatei

End Sub

Anmerkung: Man muss auch bei einer völligen Neuinstallation nicht Angst vor Datenverlust auf Laufwerk C haben! Der Speicher sollte allerdings weder allokiert noch formatiert werden.
Windows schiebt alle alten Daten in ein eigenes Verzeichnis. Viel Spaß mit dem Code.
Top
#13
Hallöchen,

wenn man einmal im FileSystemObject steckt, kann man das Umbenennen auch damit machen.
Statt
Name "C:\Sammlung\" & fDatei.Name As "C:\Sammlung\Neu_" & Right(fDatei.Name, 7)
dann
fDatei.Name = "Neu_" & Right(fDatei.Name, 7)

Vorteilhaft wäre auch eine Prüfung das Dateinamens auf die erwartete Syntax. In der Frage habe ich nicht herausgelesen, dass ausschließlich Dateien nach dem Muster "Name_" und 3-stellige Zahl enthalten sind.
Alternativ könnte man alle betroffenen Dateien zur Umbenennung in ein gesondertes Verzeichnis verschieben oder alles was nicht dazu gehört.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#14
Hallo Nora,

unter der Vorraussetzung, dass die Zahlen sich zwischen dem Unterstrich und dem Punkt vor der Dateinamenserweiterung befinden, könnte den Code auch so schreiben:

Code:
Sub DateienImVerzeichnis_Version2()
Dim fs As Object, fVerz As Object
Set fs = CreateObject("scripting.FileSystemObject")
Set fVerz = fs.GetFolder("C:\Sammlung")

For Each fDatei In fVerz.Files
If CInt(Split(Split(fDatei.Name, ".")(0), "_")(1)) Mod 2 = 0 Then
fDatei.Name = "Neu_" & Split(fDatei.Name, "_")(1)
End If
Next fDatei

End Sub
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste