Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

CSV per Batch bearbeiten und als neue csv speichern

Mitglied: chaoscs

chaoscs (Level 1) - Jetzt verbinden

08.11.2013 um 14:59 Uhr, 2788 Aufrufe, 17 Kommentare, 1 Danke

Hallo zusammen!

Ich brauche einmal Eure Hilfe.

Eine csv Datei welche per FTP Programm automatisch abgerufen wird soll wie folgt per Batch bearbeitet werden und als xy.csv gespeichert werden.

Die neue Datei soll nur Spalte 1 und die errechnete Spalte 2 enthalten. Trennzeichen ist ein "@" Zeichen

Spalte 2 errechnet sich wie folgt aus der ersten Datei:

Wenn Spalte 8<3 dann setze 0, wenn Spalte 9<4 setze 0,wenn Spalte 10<4 setze 0

Summe aus den Spalten 8+9+10 = Spalte 2

Habt Ihr da vielleicht was für mich ?
Mitglied: mc-doubleyou
08.11.2013 um 16:08 Uhr
Hey,

das sieht mir eher nach einem Makro aus als nach einer Batch.
Du kannst zwar mit einer Batch in eine csv Datei schreiben

01.
echo dein Text für A1 > meine.csv
02.
echo dein Text für A2 >> meine.csv
03.
usw.
aber ich fürchte nicht so komplex rechnen.

Aber andere wissen da sicher besser bescheid.

LG mcdy
Bitte warten ..
Mitglied: bastla
08.11.2013, aktualisiert um 17:47 Uhr
Hallo chaoscs und willkommen im Forum!

Das könnte zB so gehen:
01.
@echo off & setlocal
02.
set "Ein=D:\Datei.csv"
03.
set "Aus=D:\xy.csv"
04.
set "Delim=;"
05.

06.
del "%Aus%" 2>nul
07.
for /f "usebackq tokens=1-10 delims=%Delim%" %%a in ("%Ein%") do (
08.
    if %%h lss 3 (
09.
        >>"%Aus%" echo %%a%Delim%0
10.
    ) else (
11.
        if %%i lss 4 (
12.
            >>"%Aus%" echo %%a%Delim%0
13.
        ) else (
14.
            if %%j lss 4 (
15.
                >>"%Aus%" echo %%a%Delim%0
16.
            ) else (
17.
                set /a Summe=%%h + %%i + %%j
18.
                setlocal enabledelayedexpansion
19.
                >>"%Aus%" echo %%a%Delim%!Summe!
20.
                endlocal
21.
            )
22.
        )
23.
    )
24.
)
Vorausgesetzt habe ich, dass als Trennzeichen ein Semikolon (siehe Zeile 4) verwendet wird und in den einzelnen Zeilen keine Trennzeichen unmittelbar aufeinander folgen (weil ein onder mehrere Felder leer sind).

Grüße
bastla
Bitte warten ..
Mitglied: chaoscs
08.11.2013 um 17:39 Uhr
Hey, erstmal danke für die schnellen Antworten.

Also Trennzeichen ist wie beschrieben das "@" Zeichen.

Spalten gibt es von A-L. Die Spalten D und E sind leer. Die Spalten B,C,D,E,F,G,K,L brauche ich nicht.
Bitte warten ..
Mitglied: bastla
08.11.2013 um 17:46 Uhr
Hallo chaoscs!
Trennzeichen ist wie beschrieben das "@" Zeichen.
Sorry - hatte ich glatt überlesen ...

Wenn D und E leer sind, müssten eigentlich zwei "@" aufeinander folgen - in diesem Fall:
01.
@echo off & setlocal
02.
set "Ein=D:\Datei.csv"
03.
set "Aus=D:\xy.csv"
04.
set "Delim=@"
05.

06.
del "%Aus%" 2>nul
07.
for /f "usebackq tokens=1-10 delims=%Delim%" %%a in ("%Ein%") do (
08.
    if %%g lss 3 (
09.
        >>"%Aus%" echo %%a%Delim%0
10.
    ) else (
11.
        if %%h lss 4 (
12.
            >>"%Aus%" echo %%a%Delim%0
13.
        ) else (
14.
            if %%i lss 4 (
15.
                >>"%Aus%" echo %%a%Delim%0
16.
            ) else (
17.
                set /a Summe=%%g + %%h + %%i
18.
                setlocal enabledelayedexpansion
19.
                >>"%Aus%" echo %%a%Delim%!Summe!
20.
                endlocal
21.
            )
22.
        )
23.
    )
24.
)
Grüße
bastla
Bitte warten ..
Mitglied: chaoscs
08.11.2013 um 18:42 Uhr
Super....also läuft schonmal schön durch. Dauert ca. 5 Min bei 18000 Zeilen. Spalte A tadellos. Spalte B leider immer 0
Bitte warten ..
Mitglied: chaoscs
08.11.2013 um 18:46 Uhr
achso...jetzt wäre noch top, wenn die Ausgabedeite ein Semikolon als Trennzeichen hätte, da dass anschließend einlesende Programm keine Definition des @ Zeichens als Trennzeichen zulässt.....Tausend Dank!
Bitte warten ..
Mitglied: bastla
08.11.2013, aktualisiert um 18:49 Uhr
Hallo chaoscs!

Könntest Du mal (unter Verwendung von <code>- und </code>-Tags) ein paar Zeilen aus der Datei posten?

Für die Ausgabe mit Semikolon wäre die Zeile 19 anzupassen:
                >>"%Aus%" echo %%a;!Summe!
Grüße
bastla
Bitte warten ..
Mitglied: chaoscs
08.11.2013 um 18:57 Uhr
123456@TestTest@TestTest@@@1,00@6,00@4@4@0@0@0@
654321@TestTest@TestTest@@2,00@315,00@4@4@0@0@0@
546879@TestTest@TestTest@@20,00@149,90@4@4@0@0@0@
213879@TestTest@TestTest@@@35,00@29,50@4@4@0@0@0@
Bitte warten ..
Mitglied: chaoscs
08.11.2013 um 18:58 Uhr
quatsch..so natürlich

123456@TestTest@TestTest@@@1,00@6,00@4@4@0@0@0@
654321@TestTest@TestTest@@@2,00@315,00@4@4@0@0@0@
546879@TestTest@TestTest@@@20,00@149,90@4@4@0@0@0@
213879@TestTest@TestTest@@@35,00@29,50@4@4@0@0@0@
Bitte warten ..
Mitglied: bastla
08.11.2013 um 19:07 Uhr
Hallo choscs!

Bei Deinen Beispielzeilen enthalten die Spalten 8 bis 10 ja jeweils die Werte 4,4 und 0, sodass also wegen "Spalte 10 < 4" in allen Fällen das Ergebnis 0 lauten muss ...

Grüße
bastla
Bitte warten ..
Mitglied: chaoscs
08.11.2013 um 19:32 Uhr
ahh ok...ich dachte mir, dass die summe aus 4+4+0=8 ist?!?

Es soll auf jeden Fall so sein, dass wenn in einer der Spalten eine 4 ist, auch die vier ausgegeben wird. Ist in zwei Spalten die vier dann halt die 8 und wenn in drei Spalten die 4, dann halt die 12, halt die Summe. Geht das?
Bitte warten ..
Mitglied: bastla
08.11.2013 um 21:56 Uhr
Hallo chaoscs!

Wie soll denn nun die Regel wirklich lauten: Auf jeden Fall die Summe ausgeben, oder nur, wenn eine Spalte zumindest 4 enthält, oder ... ?

Falls tatsächlich die Ausgabe der Summe ohne Bedingung gewünscht wäre, würde sich der Batchauf
01.
@echo off & setlocal
02.
set "Ein=D:\Datei.csv"
03.
set "Aus=D:\xy.csv"
04.
set "DelimEin=@"
05.
set "DelimAus=;"
06.

07.
del "%Aus%" 2>nul
08.
for /f "usebackq tokens=1-10 delims=%DelimEin%" %%a in ("%Ein%") do (
09.
    set /a Summe=%%f + %%g + %%h
10.
    setlocal enabledelayedexpansion
11.
    >>"%Aus%" echo %%a%DelimAus%!Summe!
12.
    endlocal
13.
)
reduzieren ...

Grüße
bastla
Bitte warten ..
Mitglied: chaoscs
08.11.2013 um 22:11 Uhr
Im Prinzip ganz einfach:

Ist der Inhalt der Spalten 8-10 kleiner 4 soll er eine 0 in der Spalte setzen. Ist der Wert >=4 soll die Zahl stehen bleiben. Anschließend soll er die Summe aus den Spalten 8-10 ziehen

Bsp.

0 0 0 = 0 0 0 = 0
1 4 2 = 0 4 0 = 4
4 1 4 = 4 0 4 = 8
Bitte warten ..
Mitglied: bastla
08.11.2013 um 22:19 Uhr
Hallo chaoscs!

Dann ist die Umsetzung auch einfach :
01.
@echo off & setlocal
02.
set "Ein=D:\Datei.csv"
03.
set "Aus=D:\xy.csv"
04.
set "DelimEin=@"
05.
set "DelimAus=;"
06.
set /a Grenze=4
07.

08.
del "%Aus%" 2>nul
09.
for /f "usebackq tokens=1-10 delims=%DelimEin%" %%a in ("%Ein%") do (
10.
    set /a Summe=0
11.
    if %%f geq %Grenze% set /a Summe+=%%f
12.
    if %%g geq %Grenze% set /a Summe+=%%g
13.
    if %%h geq %Grenze% set /a Summe+=%%h
14.
    setlocal enabledelayedexpansion
15.
    >>"%Aus%" echo %%a%DelimAus%!Summe!
16.
    endlocal
17.
)
Grüße
bastla
Bitte warten ..
Mitglied: chaoscs
09.11.2013 um 09:00 Uhr
Funktioniert super! Nochmal danke!
Bitte warten ..
Mitglied: chaoscs
09.11.2013 um 09:43 Uhr
Leider fallen einem Fehler erst auf, wenn man damit arbeitet.....Kann man noch eine erste Zeile mit Überschriften und eine dritte Spalte mit einer fixen Zahl einfügen?!?

Ergebnis quasi:

Spalte1 Spalte 2 Spalte 3
xx xy xz
Spalte 1 Summe 1
Spalte 1 Summe 1
....
Bitte warten ..
Mitglied: bastla
09.11.2013 um 11:30 Uhr
Hallo chaoscs!
Kann man noch eine erste Zeile mit Überschriften und eine dritte Spalte mit einer fixen Zahl einfügen?!?
Man(n) kann :
01.
@echo off & setlocal
02.
set "Ein=D:\Datei.csv"
03.
set "Aus=D:\xy.csv"
04.
set "DelimEin=@"
05.
set "DelimAus=;"
06.
set /a Grenze=4
07.
set /a Fix=42
08.

09.
>"%Aus%" echo xx%DelimAus%xy%DelimAus%xz
10.
for /f "usebackq tokens=1-10 delims=%DelimEin%" %%a in ("%Ein%") do (
11.
    set /a Summe=0
12.
    if %%f geq %Grenze% set /a Summe+=%%f
13.
    if %%g geq %Grenze% set /a Summe+=%%g
14.
    if %%h geq %Grenze% set /a Summe+=%%h
15.
    setlocal enabledelayedexpansion
16.
    >>"%Aus%" echo %%a%DelimAus%!Summe!%DelimAus%%Fix%
17.
    endlocal
18.
)
Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
CSV kleinerer Wert (Batch)
Frage von jochengBatch & Shell3 Kommentare

Ich habe eine CSV Datei mit folgendem Inhalt: 29664;24,95 29664;12,95 29645;9,95 29645;9,95 29655;12,95 29655;24,95 29664;24,95 29655,12,95 29655,24,95 29664;12,95 29664;24,95 ...

Batch & Shell
Batch - .csv to .txt
gelöst Frage von freshman2017Batch & Shell11 Kommentare

Hallo Ihr, ich habe da nochmal eine leichte kurze Frage, vielleicht hat da jemand ein Code für mich. Folgende ...

Batch & Shell
Per batch datei CSV auslesen
gelöst Frage von Newplay123Batch & Shell10 Kommentare

Hallo, ich will mit einer Batch dabei eine .csv datei auslesen. Dafür benutzt ich diesen Code: In der CSV ...

Batch & Shell
Batch zum bearbeiten mehrerer CSV
Frage von Matzus87Batch & Shell3 Kommentare

Hallo Zusammen, ich bin neu hier und arbeite mich gerade in die Batch Programmierung ein. Ich sitze momentan an ...

Neue Wissensbeiträge
Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 - Jetzt in Deutsch verfügbar! (Windows 10 1903 Support)

Tipp von TrinXx vor 11 StundenSicherheits-Tools1 Kommentar

Moin! Nach wochenlangem Warten wird Trend Micro das SP1 für WFBS 10 voraussichtlich am 26.08.19 veröffentlichen. Ich habe das ...

Hyper-V
Setup VM W2016 startet nicht in Hyper-V 2016
Erfahrungsbericht von keine-ahnung vor 1 TagHyper-V4 Kommentare

Moin, sitze gerade über meinem neuen Server und versuche, die VM auf den Host zu prügeln. Jetzt wollte ich ...

Server-Hardware

HPE Proliant ML350P Gen8 Probleme mit Zugriff auf Raid-Volumes

Erfahrungsbericht von goscho vor 1 TagServer-Hardware1 Kommentar

Hallo Leute, das Problemgerät: HPE ML350P G8 Windows Server 2012R2 HyperV-Host 8 x 300 GB 10K SAS HDD (1 ...

Humor (lol)

"Linux und 5 Gründe Warum man kein Windows verwenden sollte sondern Ubuntu Linux"

Information von Snowbird vor 3 TagenHumor (lol)9 Kommentare

Gerade gefunden. Ja, ist etwas älter, aber irgendwie lustig?

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Grafikkarten Angebot auf Amazon
gelöst Frage von NudellordGrafikkarten & Monitore22 Kommentare

Hallo Community, ich suche eine neue Grafikkarte und bin auf die Nvidea Gforce GTX 1080 ti gestoßen. Und dabei ...

Hyper-V
Keine Netzwerkverbindung W2016 VM
gelöst Frage von keine-ahnungHyper-V19 Kommentare

Moin, ich verliere gleich meine contenance ;-). Ich versuche gerade, auf einem Hyper-V 2016 GUI eine W2016-VM (Generation 2 ...

Batch & Shell
Powershell - Webseite auslesen und Abspeichern ein paar Probleme
gelöst Frage von kime203Batch & Shell18 Kommentare

Hallo alle miteinander, ich hab die Aufgabe eine Webseite auszulesen um Einsatzdaten der Feuerwehr daraus zu gewinnen. Das habe ...

Windows 7
Systemwiederherstellung mittel Console und Schattenkopie?
Frage von Kerbel3rdWindows 717 Kommentare

Moin, leider hat mir das Update auf Framework 4.8 meinen Rechner bzw mein Framework zerschossen. Nach tagelangen Reparaturversuchen mittels ...