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

gelöst Batch Datei um eine CSV zu bearbeiten und umzuformatieren

Mitglied: Branpo

Branpo (Level 1) - Jetzt verbinden

19.07.2019 um 21:32 Uhr, 228 Aufrufe, 3 Kommentare

Guten Abend,

ich habe eine CSV Liste die folgendermaßen aussieht:

MYL: 92.18
TEVA: 91.51
LEG: 90.63
FLR: 88.74
GLD: 79.52

usw.

1-4 Buchstaben dann einen : und anschließend eine Zahl mit zwei Nachkommastellen.

Nun soll aus der Liste die erste Zeile entfernt werden, dafür habe ich folgenden Code gefunden:

01.
@echo off
02.
for /f "delims=" %%i in ('dir /a-d /b /on "*.csv"') do (
03.
    more /e +1 "%%i">"%%i.tmp" 
04.
    del "%%i" && ren "%%i.tmp" "%%i"
05.
)
06.
exit /b
anschließend sollen alle Spalten deren Zahl kleiner als 60,00 gelöscht werden.

Zuletzt sollte dann das ganze in folgendes CSV Format geschrieben werden:
SYM,MYL,SMART/AMEX
SYM,TEVA,SMART/AMEX
SYM,LEG,SMART/AMEX
SYM,FLR,SMART/AMEX
SYM,GLD,SMART/AMEX


das SYM, und ,SMART/AMEX ist fix nur eben den Mittelteil soll aus der ursprünglichen CSV Datei von den übrig gebliebenen übernommen werden

den letzten Teil habe ich mit 2 zusätzlichen CSV Dateien und einem gefundenen Code gelöst:

01.
@echo off &setlocal DisableDelayedExpansion
02.

03.
set "outfile=output.csv"
04.

05.
set "first="
06.
set "tmpfile1=%temp%\out.csv~"
07.
set "tmpfile2=%temp%\ascii.csv~"
08.
for /f "delims=" %%i in ('dir /a-d /b /on "*.csv"') do (
09.
  echo Verarbeitung von "%%i".
10.
  if not defined first (
11.
    >"%outfile%" echo "%%i"
12.
    >>"%outfile%" type "%%i"
13.
    set "first=1"
14.
  ) else (
15.
    set "nextfile=%%i"
16.
    call :merge
17.
  )
18.
)
19.
pause
20.
exit /b
21.

22.
:merge
23.
>"%tmpfile2%" type "%nextfile%"
24.
<"%outfile%" >"%tmpfile1%" (
25.
  set "first=" &set /p "first="
26.
  setlocal EnableDelayedExpansion
27.
  echo(!first!,"!nextfile!"
28.
  endlocal
29.
  for /f "delims=" %%j in ('findstr /n "^" "%tmpfile2%"') do (
30.
    set "first=" &set /p "first="
31.
    set "second=%%j"
32.
    setlocal EnableDelayedExpansion
33.
    echo(!first!,!second:*:=!
34.
    endlocal
35.
  )
36.
)
37.
>nul move /y "%tmpfile1%" "%outfile%"
38.
>nul del "%tmpfile2%"
39.
exit /b
Da ich wirklich sogut wie keine Ahnung davon habe und es sicherlich alles in einer Batch Datei geht wäre es super wenn mir jemand helfen könnte!

Vielen Dank und liebe Grüße
Branpo
Mitglied: 140447
LÖSUNG 20.07.2019, aktualisiert um 10:51 Uhr
01.
@echo off
02.
set "quelle=d:\daten"
03.
Powershell -EP Bypass -NoP -c "gci '%quelle%' -Filter *.csv -File | %%{(gc $_.Fullname) | select -skip 1 | ?{[decimal]($_.split(':')[1].trim()) -ge 60} | %%{ 'SYM,' + $_.split(':')[0] + ',SMART/AMEX'} | sc $_.Fullname}"
Bitte warten ..
Mitglied: Branpo
20.07.2019, aktualisiert um 16:35 Uhr
Vielen Dank für den Quellcode.
Er funktioniert super!

Gibt es noch die Möglichkeit das er als Quelle automatisch den Ordner nimmt in dem die Bat ist?
Bitte warten ..
Mitglied: 140447
LÖSUNG 20.07.2019, aktualisiert um 17:29 Uhr
Gibt es noch die Möglichkeit das er als Quelle automatisch den Ordner nimmt in dem die Bat ist?
Klar. schon mal was von %~dp0 gehört ?!
01.
set "quelle=%~dp0"
Bitte warten ..
Ähnliche Inhalte
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 : CSV-Datei als Variable speichern
gelöst Frage von Newplay123Batch & Shell1 Kommentar

Hallo, ich versuche dies jetzt schon seid ewigkeiten hinzubekommen. Entweder ich bin zu doof zum googlen oder es geht ...

Batch & Shell

Per Batch eine Spalte in eine CSV Datei einfügen

gelöst Frage von mayli01Batch & Shell13 Kommentare

Hallo Forum :) Folgende Ausgangssituation. Ich habe eine CSV Artikelliste mit insgesamt 9 Spalten, einer Kopfzeile und etwa 50 ...

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

Neue Wissensbeiträge
Humor (lol)

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

Tipp von Snowbird vor 13 StundenHumor (lol)8 Kommentare

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

Humor (lol)

"Warum Linux in einer vernetzten Welt einfach keinen Komfort bietet!"

Tipp von Snowbird vor 1 TagHumor (lol)13 Kommentare

Ein interessanter Einblick warum Linux nichts für Geräteübergreifende Arbeit ist :)

Humor (lol)
Zuviel Speicher ist ungesund. :-)
Tipp von Lochkartenstanzer vor 1 TagHumor (lol)14 Kommentare

Moin Kollegen, Heute hatte ich ein ungewöhnliches Aha-Erlebnis: Über das Wochenende habe ich einen einen 6 Jahre alten Bare-Metal ...

Windows Update

KB4517297 verfügbar, behebt Fehler in VB6 VBA VBScript

Information von sabines vor 1 TagWindows Update

Das Update behebt mögliche Fehler in VB6, VBA und VBScript, die durch das Update KB4512486 vom August entstanden sind. ...

Heiß diskutierte Inhalte
Router & Routing
Deinstalliertes Geräte wird in FritzBox noch immer als verbundenes Gerät angezeigt
gelöst Frage von imebroRouter & Routing18 Kommentare

Hallo, in meiner FritzBox 7490 wird im Bereich "Funknetz" ein Gereät bei den verbundenen Geräten angezeigt, wobei ich nicht ...

Batch & Shell
PowerShell - Text an HTMLbody übergeben mit UTF-8 Kodierung
Frage von Pat.batBatch & Shell14 Kommentare

Hallo zusammen, ich stoße momentan auf folgendes Problem. Ich möchte mit meinem Skript E-Mails versenden. Text und Signatur samt ...

Sonstige Systeme
Ist es möglich ein ISDN-Telefon an einen analogen Anschluss anzuschließen?
Frage von cramtroniSonstige Systeme14 Kommentare

Also anders herum geht es ja, da gibt es ja diese Adapter von RJ11 auf TAE-F, aber gibt es ...

Humor (lol)
Zuviel Speicher ist ungesund. :-)
Tipp von LochkartenstanzerHumor (lol)14 Kommentare

Moin Kollegen, Heute hatte ich ein ungewöhnliches Aha-Erlebnis: Über das Wochenende habe ich einen einen 6 Jahre alten Bare-Metal ...