vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Autorename von Dateien und Ordnern 
Autor: VBros
Datum: 02.01.09 21:16

Hi,

ich versuche gerade einen Autorenamer für Dateien und Ordner zu schreiben, was sich aber als nicht ganz so einfach für mich rausstellt.
Ich poste einfach mal das was ich bis jetzt gemacht habe, ich denke der Code ansich erklärt die Funktion am besten.

Imports System.IO
Imports System.Text.RegularExpressions
 
Module DlsRename
 
    'Beispiel:
    '"test.doku.divx.www.webseite.info.-.2.2a_.DAT" wird zu "Test - 2.2a.dat"
 
    Sub Main()
        Dim oFolder As String = "D:\Downloads\test"
        Dim FSI As FileSystemInfo
        Dim sFSI As FileSystemInfo() = New DirectoryInfo( _
          oFolder).GetFileSystemInfos
        For Each FSI In sFSI
            Dim oName As String = FSI.Name
            If TypeOf FSI Is FileInfo Then oName = _
              Path.GetFileNameWithoutExtension(FSI.Name)
 
            'Url's entfernen
            Dim pattern As String = ".*?((?:www\.|http://|http://www\.)[\S]+?(" & _
              "?:\.to|de|com|info)).*"
            Dim regex As New Regex(pattern, RegexOptions.IgnoreCase)
            For Each m As Match In regex.Matches(oName)
                oName = regex.Replace(oName, pattern, "")
            Next
 
            'Zwischenzeichen entfernen
            Dim dString As String = "german,divx,[,],(" & _
              ",),<,>,dtv,.ws,-RSG,-nva,-XC,omp-,dokumentation,doku,-TSCC,FS"
            oName = cRemove(oName, dString)
 
            'Start- & Endzeichen entfernen
            For i As Integer = 1 To Len(oName)
                If WrongStartEndChar(Mid(oName, 1, 1)) Then
                    oName = Mid(oName, 2)
                ElseIf WrongStartEndChar(Mid(oName, Len(oName) - 1, 1)) Then
                    oName = Mid(oName, 1, Len(oName) - 1)
                Else
                    Exit For
                End If
            Next
 
            'TrennPunkte behandeln
            For i As Integer = 1 To Len(oName)
                If Mid(oName, i, 1) = "." Then
                    If Not IsNum(Mid(oName, i - 1, 1) & Mid(oName, i + 1, 1)) _
                      Then oName = Mid(oName, 1, i - 1) & " " & Mid(oName, i + _
                      1)
                End If
            Next
 
            'Zwischenzeichen ersetzen
            Dim rString As String = "_, ,ö,oe,ä,ae,ü,ue"
            oName = cReplace(oName, rString)
 
            'Erstes Zeichen groß schreiben
            oName = Mid(oName, 1, 1).ToUpper & Mid(oName, 2)
 
            'Dateierweiterung wieder anhängen
            If TypeOf FSI Is FileInfo Then oName = oName & FSI.Extension.ToLower
 
            'Prüfen & ggf. durchführen der Änderung
            If FSI.Name <> oName Then
                MsgBox("Ändern:" & vbNewLine & FSI.Name & vbNewLine & oName)
            End If
        Next
    End Sub
 
    Private Function IsNum(ByVal Number As String) As Boolean
        Dim rNumber As String = ""
        Try
            rNumber = Integer.TryParse(Number, rNumber)
            If Number = rNumber Then IsNum = True
        Catch ex As Exception
            IsNum = False
        End Try
    End Function
 
    Private Function cRemove(ByVal Text As String, ByVal ToRemoveString As _
      String) As String
        cRemove = Text
        Dim aRemove() As String = Split(ToRemoveString, ",")
        For i As Integer = 0 To aRemove.Length - 1
            cRemove = cRemove.Replace(aRemove(i), "")
        Next
    End Function
 
    Private Function cReplace(ByVal Text As String, ByVal ReplaceString As _
      String) As String
        cReplace = Text
        Dim aReplace() As String = Split(ReplaceString, ",")
        For i As Integer = 0 To aReplace.Length - 1 Step 2
            cReplace = cReplace.Replace(aReplace(i), aReplace(i + 1))
        Next
    End Function
 
    Private Function WrongStartEndChar(ByVal SingleChar As String) As Boolean
        WrongStartEndChar = False
        Dim aChars() As String = Split(".,-,_,#, ,'", ",")
        For i As Integer = 0 To aChars.Length - 1
            If aChars(i) = SingleChar Then WrongStartEndChar = True
        Next
    End Function
 
End Module
Mein Problem ist jetzt jedoch das da Müll rauskommt, was hauptsächlich an der URL entfernung liegt.
Aber auch die anderen Funktionen sind nicht wirklich Fehlerfrei. Da ich noch ziemlicher Anfänger bin fällt mir das noch relativ schwer einen "Sauberen" Code zu schreiben.
Daher die bitte an euch: Wer kann mir helfen die Fehler und ggf. einfachere/bessere Befehls-pendants zu finden und Tipps geben wie man sowas "sauber" Aufbaut?

Beitrag wurde zuletzt am 02.01.09 um 21:17:37 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Autorename von Dateien und Ordnern1.082VBros02.01.09 21:16
Re: Autorename von Dateien und Ordnern687VBros03.01.09 01:26
Re: Autorename von Dateien und Ordnern700ModeratorDaveS03.01.09 08:30
Re: Autorename von Dateien und Ordnern785VBros03.01.09 13:33
Re: Autorename von Dateien und Ordnern662VBros05.01.09 11:17
Re: Autorename von Dateien und Ordnern678ModeratorDaveS05.01.09 12:03
Re: Autorename von Dateien und Ordnern612VBros05.01.09 12:08
Re: Autorename von Dateien und Ordnern665ModeratorDaveS05.01.09 13:06
Re: Autorename von Dateien und Ordnern634VBros05.01.09 13:54

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel