Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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)
Antworten 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.
Antworten 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)
Antworten 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
Antworten Top


Gehe zu:


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