vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

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

VB.NET - Ein- und Umsteiger
Dateien umbenennen 
Autor: susy00
Datum: 25.07.16 20:09

Hallo Forum,

ich habe ein Problem. Mein Chef will das ich die Abgelegten Rechnungen (das sind mehrere tausende) neu formatiere. Jeder Sachbearbeiter hat die Dateien irgendwie anders benannt.
Alles sind txt Dateien. Er will das ich alles Dateien nach der in der Rechnung abgelegten Auftragsnummmer abspeichere. Die Auftragsnummer ist 6stellig und ist in der Rechnung unter

Auftragsnummer:123456 abgespeichert
Die Rechnungen liegen alle auf C:\Rechnungen

Gibt es hier eine einfache Lösung ? Ein bekannter hat mir das Forum empfohlen.

Tschüssi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien umbenennen 
Autor: Manfred X
Datum: 25.07.16 21:16

Hallo!

Was hat der Begriff "Formatieren" in diesem Zusammenhang zu bedeuten?

Auf Grundlage Deiner (vagen) Angaben könnte eine Lösung etwa so aussehen:
Private Sub UmbenennenNachAuftragsnummer(ByVal folder As String)
 
   'Alle Textdateien im Ordner durchlaufen
   For Each file As String In IO.Directory.GetFiles _
        (folder, "*.txt", IO.SearchOption.AllDirectories)
 
       'Zeilen der aktuellen Datei lesen
       Dim lines() As String = IO.File.ReadAllLines(file)
 
       Dim index As Integer = -1, found As Boolean = False
 
       Do
          'Zeile mit Auftragsnummer suchen
          index += 1
          If lines(index).ToLower.StartsWith("auftragsnummer:") Then
 
              'Auftragsnummer in Zeile ermitteln
              Dim parts() As String = lines(index).Split(":"c)
              If Not parts.Length = 2 Then
                 Stop 'ungeeignete Zeile mit Auftragsnummer
              End If
 
              'Neuen Namen der Datei aufbauen
              Dim newname As String = _
              IO.Path.Combine_
                (IO.Path.GetDirectoryName(file), parts(1)) & ".txt"
 
              'Umbenennen
              Rename(file, newname)
 
              found = True
          End If
       Loop While Not found AndAlso index < lines.Length - 1
 
       If Not found Then
          Stop 'Keine Auftragsnummer in der Datei
       End If
   Next File
 
End Sub
Aber verstehe und teste den Vorschlag erst genau (Testdateien!),
ehe Du solchen Code auf Deine Auftrags-Dateien losläst.
Der Einbau von Try__Catch__Blöcken könnte auch nicht schaden.

Eventuell noch zu beachten:
Doppelte Auftragsnummern und bereits vorhandene Dateinamen.
Hinter Parts(1) könnte man noch ein "Trim" setzen (Leerzeichen entfernen).

Beitrag wurde zuletzt am 25.07.16 um 21:30:54 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien umbenennen 
Autor: susy00
Datum: 26.07.16 19:13

Hallo,

doppelte Auftragsnummern und bereits vorhandene Dateinamen kann ich ausschließen ;)
Ich weis nur noch nicht wo ich meinen Pfad C:\Rechnungen hinschreiben muss ?
Und wie kann ich das ganze dann mit einem Button aufrufen ?

Tschüssi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien umbenennen 
Autor: Manfred X
Datum: 26.07.16 22:25

Wenn Du nicht programmieren kannst, solltest Du
keine derartigen Aufträge übernehmen.

Ich rate dringend davon ab, unverstandenen Code zur
Manipulation von Geschäftsdaten zu verwenden.

Hier ein Windows.Forms-Formular ....
(Auswahl des Pfades im FolderBrowser-Dialog.)
Public Class frmRenameFiles
 
 
    Private fbd As New FolderBrowserDialog
 
    Private WithEvents btnRename As New Button With _
        {.Parent = Me, .Text = "Rename Files"}
 
 
    Private Sub btnRename_Click(sender As Object, _
        e As System.EventArgs) Handles btnRename.Click
 
        With fbd
            .ShowNewFolderButton = False
            If .ShowDialog = _
               Windows.Forms.DialogResult.Cancel Then Exit Sub
 
            btnRename.Enabled = False
            Me.Text = "Dateien werden umbenannt"
            Me.Refresh()
 
            UmbenennenNachAuftragsnummer(fbd.SelectedPath)
 
            Me.Text = ""
            btnRename.Enabled = True
        End With
    End Sub
 
 
    Private Sub UmbenennenNachAuftragsnummer(ByVal folder As String)
        'Code der Routine vom obigen Post einfügen
    End Sub
 
 End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien umbenennen 
Autor: Franki
Datum: 27.07.16 01:40

Hallo,

um was für eine Art Rechnungen handelt es sich?

Dir ist ja schon bewusst, dass aus juristischen Gründen die Rechnung des Empfängers und des Rechnungsstellers zu 100% identisch sein müssen, egal in welcher Form sie an den Kunden übermittelt worden ist.

Jedes anerkannte Warenwirtschaftssystem welches auch Rechnungen schreiben kann hat die Funktion, dass Rechnungen wenn sie final sind und an den Kunden übermittelt worden sind nachträglich nicht mehr verändert werden können/dürfen. Bei Fehlern muss man das dann über eine Gutschrift/neue Rechnung machen.

Also frage deine Chef mal wie er das sieht gegenüber dem Finanzamt wenn er mal eine Steuerprüfung hat, oder wenn es mal einen Streitfall mit einem Kunden gibt. Damit ist dein Chef auf der sicheren Seite und er sollte sich auch mal bei seinem evtl. vorhandenen Stuerberater erkundigen, ob die Rechnungsänderungen überhaupt zuslässig sind bzw. wie sie gemacht werden können/dürfen.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien umbenennen 
Autor: DotNetErbse
Datum: 28.07.16 07:33

Eine Änderung des Namens der Datei der Rechnung verändert die Rechnung nicht.

Mit freundlichen Gr??en
DotNetErbse


[Es hei?t Paket und nicht Packet, auch wenn Standard augenscheinlich von Standar(t)e kommt,hei?t es dennoch Standar(d)]

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien umbenennen 
Autor: susy00
Datum: 28.07.16 17:37

Hallo,

ich sehe das auch so das eine Änderung des Namens der Datei die Rechnung nicht verändert.

Habe das ganze jetzt so zusammengefügt:

Public Class Form1
 
    Private fbd As New FolderBrowserDialog
 
    Private WithEvents btnRename As New Button With _
        {.Parent = Me, .Text = "Rename Files"}
 
 
    Private Sub btnRename_Click(sender As Object, _
        e As System.EventArgs) Handles btnRename.Click
 
        With fbd
            .ShowNewFolderButton = False
            If .ShowDialog = Windows.Forms.DialogResult.Cancel Then Exit Sub
 
            btnRename.Enabled = False
            Me.Text = "Dateien werden umbenannt"
            Me.Refresh()
 
            UmbenennenNachAuftragsnummer(fbd.SelectedPath)
 
            Me.Text = ""
            btnRename.Enabled = True
        End With
    End Sub
 
 
    Private Sub UmbenennenNachAuftragsnummer(ByVal folder As String)
        'Alle Textdateien im Ordner durchlaufen
        For Each file As String In IO.Directory.GetFiles(folder, "*.txt", _
          IO.SearchOption.AllDirectories)
 
            'Zeilen der aktuellen Datei lesen
            Dim lines() As String = IO.File.ReadAllLines(file)
 
            Dim index As Integer = -1, found As Boolean = False
 
            Do
                'Zeile mit Auftragsnummer suchen
                index += 2
                If lines(index).ToLower.StartsWith("auftragsnummer:") Then
 
                    'Auftragsnummer in Zeile ermitteln
                    Dim parts() As String = lines(index).Split
                    If Not parts.Length = 2 Then
                        Stop 'ungeeignete Zeile mit Auftragsnummer
                    End If
 
                    'Neuen Namen der Datei aufbauen
                    Dim newname As String = _
                    IO.Path.Combine(IO.Path.GetDirectoryName(file), parts(1)) & _
                    ".txt"
 
                    'Umbenennen
                    Rename(file, newname)
 
                    found = True
                End If
            Loop While Not found AndAlso index < lines.Length - 1
 
            If Not found Then
                Stop 'Keine Auftragsnummer in der Datei
            End If
        Next file
 
    End Sub
 
End Class
Leider wird die Auftragsnummer nicht gefunden .
Oder sieht jemand einen Fehler ?

Beitrag wurde zuletzt am 28.07.16 um 17:37:50 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien umbenennen 
Autor: Manfred X
Datum: 28.07.16 21:49

Wie kommst Du auf index +=2 ?
Wie bereits erwähnt, sind Deine Angaben völlig unzureichend.
Mehr als allgemeine Hinweise sind deshalb nicht möglich.

Zum Beispiel .....
Welche CodePage/Codierung des Textes wird verwendet?
Stehen Zeilentrenner in der Datei? Carriage Return - Line Feed? Andere?
Steht die Auftragsnummer am Anfang einer Zeile?
Stehen in dieser Zeile weitere Angaben (hinter der Nummer)?
Sind zusätzlich zum Rechnungs-Text andere Codes (XML/RTF o.ä.) in die
Dateien eingetragen?
Stehen eventuell Nullbytes oder Steuerzeichen in der Datei (z.B. Tabulator)?
usw.

Alle diese Angaben können "code-relevant" sein.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien umbenennen 
Autor: Franki
Datum: 29.07.16 02:13

Hallo,

Zitat:

Eine Änderung des Namens der Datei der Rechnung verändert die
Rechnung nicht.


Der Inhalt der Rechnung bleibt identisch, aber ob der Dateiname Bestandteil eines Betriebsablaufs sein darf oder muss ist eine anderen Sache.

Bei finalen Rechnungen die z.B. per E-Mail mit digitalier Signatur an den Kunden geschickt worden sind, oder in einem Warenwirtschaftssystem geschrieben worden sind dürfen auch Dateinamen nicht nachträglich verändert werden.

In einem vom Finanzamt anerkannten WaWi geht das eigentlich auch gar nicht.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien umbenennen 
Autor: susy00
Datum: 29.07.16 20:03

Hallo,

habe es jetzt auch mit +=1 versucht. Leider ging es auch nicht

Wir haben ja vorgedrucktes Briefpapier. In der Textdatei steht nur die Adresse, Auftragsnummer und die Waren.

Habe mal ein Beispiel hochgeladen.

http://xup.in/dl,41798541
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateien umbenennen 
Autor: Manfred X
Datum: 29.07.16 20:35

In Deinem Beispiel steht am Zeilenanfang eine Zeilennummer.

Die Auftragsnummer findest Du in dem Fall nicht per "StartsWith",
sondern durch "Contains".
   '.....
   If lines(index).ToLower.Contains("auftragsnummer:") Then
     '....
Verwende ich direkt die hochgeladene Datei Muster.Txt,
funktioniert die Umbenennung mit dem oben von mir geposteten Code.

Der Inhalt Deiner Rechnungsdateien muß "irgendwie" anders
aussehen bzw. codiert sein.

Beitrag wurde zuletzt am 29.07.16 um 20:58:04 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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-2024 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