Alle Dateinamen in Kleinbuchstaben umbenennen
[Windows 95/98/NT/2000]

29.10.1999


Vor Kurzem wurde ich per Mail gefragt,
    ob und wie es möglich ist, alle Dateinamen eines Ordners oder eines
    gesamten Datenträgers in Kleinbuchstaben umzuwandeln.

    Die Lösung ist recht einfach.

    Zunächst müssen alle Ordner und Dateinamen in 2 verschiedene
    Listboxes geschrieben werden.

    Wichtig hierbei ist, das beide Listboxes die Eigenschaft 
    Sorted=True besitzen.

    Alle Ordner- und Dateinamen werden nun mit vorangestellter Ordner-
    bzw. Dateilänge in die jeweilige Listbox gesetzt,
    deshalb mit der Längenangabe, da der längste Ordner- bzw. Dateiname
    nun am Ende der Listbox aufgeführt ist und nun das Umbenennen
    der Ordner und Dateien von unten nach oben erfolgen muss.
    Zuerst die am tiefsten verschachtelten Ordner bzw. Dateien,
    da sonst ein "Zugriff verweigert" erfolgen würde.

   Das Umbenennen erfolgt mit der
Name...As... Anweisung:

ERFORDERLICHE OBJEKTE
   1 Form (frmMain)
   4 Listboxes
      (lstDateiname, lstOrdnername, lstDateifehler, lstOrdnerfehler)
      Eigenschaft Sorted=True
   1 Commandbutton (Command1)

 FORM-CODE
   Public Sub ScanDrive(strStartPath As String, strPattern As String)
      Dim strTemp, strRepeat, Dateiname As String
      On Error Resume Next
      If Right(strStartPath, 1) <> "\" Then _
         strStartPath = strStartPath + "\"
      strTemp = Dir(strStartPath & strPattern)
      If Right(strStartPath, 1) <> "\" Then _
         strStartPath = strStartPath + "\"
   
      Do While Len(strTemp)
         Dateiname = strStartPath & strTemp
         frmMain.Caption = Dateiname
         frmMain.lstDateiname.AddItem (Len(Dateiname) & ":" & Dateiname)
         DoEvents
         strTemp = Dir()
      Loop
      strTemp = Dir(strStartPath, vbDirectory)
      Do While Len(strTemp)
         If (strTemp <> ".") And (strTemp <> "..") Then
            If (GetAttr(strStartPath & strTemp) And vbDirectory) = _
               vbDirectory Then
               frmMain.lstOrdnername.AddItem _
                  (Len(strStartPath & strTemp) & _
                  ":" & strStartPath & strTemp)
               ScanDrive strStartPath & strTemp, strPattern
               strRepeat = Dir(strStartPath, vbDirectory)
               Do While strRepeat <> strTemp
                  strRepeat = Dir()
               Loop
            End If
         End If
        strTemp = Dir()
      Loop
      On Error GoTo 0
   End Sub
   Private Sub Command1_Click()
      lstDateiname.Clear
      lstOrdnername.Clear
      lstDateifehler.Clear
      lstOrdnerfehler.Clear
      Call ScanDrive("c:\test", "*.*")
      For x = lstDateiname.ListCount - 1 To 0 Step -1
         On Error GoTo err1
         lstDateiname.ListIndex = x
      tmp = lstDateiname.List(x)
      tmp = Mid(tmp, InStr(tmp, ":") + 1, Len(tmp))
      Name tmp As LCase(tmp)
      err1:
      If Err.Number <> 0 Then lstDateifehler.AddItem _
         Error(Err.Number) & " bei " & tmp
      Next x
      For x = lstOrdnername.ListCount - 1 To 0 Step -1
         On Error GoTo err2
         lstOrdnername.ListIndex = x
         tmp = lstOrdnername.List(x)
         tmp = Mid(tmp, InStr(tmp, ":") + 1, Len(tmp))
         Name tmp As LCase(tmp)
         err2:
         If Err.Number <> 0 Then lstOrdnerfehler.AddItem _
           Error(Err.Number) & " bei " & tmp
      Next x
      Caption = lstDateiname.ListCount
      Me.Caption = "Fertig...!"
   End Sub
 

 

Download - 3 KB