Announcement

Collapse
No announcement yet.

CSV mit Batch zusammenfassen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CSV mit Batch zusammenfassen

    Hallo,

    ich habe im Netz einen Code gefunden, der mit CSV-Dateien zusammenfügt, aber nur einmal die Kopfzeile in die Ergebnisdatei schreibt. Soweit so gut, aber ich finde den Fehler nicht, warum er mit jeden Datensatz aus den Dateien doppelt in die Ergebnisdatei schreibt.
    Das Ergbenis sieht wie folgt aus:

    Kopfzeile
    Datei1 Zeile1
    Datei1 Zeile2
    Datei2 Zeile1
    Datei2 Zeile2
    Datei1 Zeile1
    Datei1 Zeile2
    Datei2 Zeile1
    Datei2 Zeile2

    eigentlich müsste doch nach der 5. (mit Kopfzeile) Zeile Schluss sein...

    Code:
    @echo off & setlocal
    set "Ordner=C:\Users\pintaske\Desktop\zeiterfassung"
    set "Sammel=C:\Users\pintaske\Desktop\zeiterfassung\alle.csv"
     
    pushd "%Ordner%"
    if exist "%Sammel%" del "%Sammel%"
    for %%i in (*.csv) do if not exist "%Sammel%" for /f "usebackq delims=" %%z in ("%%i") do if not exist "%Sammel%" echo %%z>"%Sammel%"
    for /f "delims=" %%i in ('dir /b /od *.csv') do more +1 "%%i">>"%Sammel%"
     
    popd

  • #2
    Er schreibt nicht die Datensätze doppelt, sondern bearbeitet die Datein mehrfach
    Christian

    Comment


    • #3
      Hast du zufällig auch gleich eine Lösung parat, wie ich das umgehen kann?

      Gruß crush

      Comment


      • #4
        Nein, da müsste ich mir das Batch ansehen....und das ist aufwändiger, als das mit einem PERL-Script oder einer Javaklasse zu machen
        Christian

        Comment


        • #5
          Das was oben steht, ist die komplette Datei, mehr ist nicht drin.

          Gruß crush

          Comment


          • #6
            Davon würde ich ausgehen...trotzdem müsste ich mich da erst reinfummeln
            Christian

            Comment


            • #7
              Hallo, der Fehler ist, dass das Ergebnis nicht im selben Ordner liegen darf. Wenn man für alle.csv noch ein Unterverzeichnis anlegt, funktioniert es, wie es soll.

              Gruß crush

              Comment


              • #8
                Code:
                @echo off & setlocal
                set "Ordner=C:\Users\pintaske\Desktop\zeiterfassung"
                set "Sammel1=C:\Users\pintaske\Desktop\zeiterfassung\alle.tmp"
                set "Sammel2=C:\Users\pintaske\Desktop\zeiterfassung\alle.csv"
                 
                pushd "%Ordner%"
                if exist "%Sammel1%" del "%Sammel1%"
                if exist "%Sammel2%" del "%Sammel2%"
                for %%i in (*.csv) do if not exist "%Sammel1%" for /f "usebackq delims=" %%z in ("%%i") do if not exist "%Sammel1%" echo %%z>"%Sammel1%"
                for /f "delims=" %%i in ('dir /b /od *.csv') do more +1 "%%i">>"%Sammel1%"
                 
                popd
                
                rename %sammel1% %sammel2%
                Ob die Syntax richtig ist - keine Ahnung...
                was das mit dem pushd und popd bedeutet - keine Ahnung...
                Günther

                Comment


                • #9
                  Moin,

                  nein, Syntax ist nicht richtig. Bekomme einen Syntaxfehler und erhalte nur die alle.tmp. Der obere Code funktioniert ja, ich denke mit dem Unterverzeichnis kann ich gut leben.

                  Danke trotzdem

                  Gruß crush

                  Comment

                  Working...
                  X