Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Batch datei ausfiltern

Frage Entwicklung Batch & Shell

Mitglied: berni3487

berni3487 (Level 1) - Jetzt verbinden

16.08.2010, aktualisiert 18:21 Uhr, 2993 Aufrufe, 8 Kommentare

Ich möchte eine Textdatei die von einen Programm exportiert wird speziell filtern, und die gefundenen werte in excel anzeigen.

Hallo

Einfache copy befehle o.ä. bekomme ich per batch hin, aber bei folgender Aufgabenstellung muss ich leider passen.
Vielleicht könnt ihr mir da bitte weiterhelfen!

Also die Datei sieht wie folgt aus:

0,0,1,1;10,1;21,Z;22,27.07.10;23,23:00:00;24,O;25,0;27,3;51,0;11,testkasse;12,100;18,1;19,192.168.2.10;2,16.08.2010;3,13:57;4,34;5,VCOM 6.94;6,T7.0.2.0-112;8,16;1001,1;1101,50/EUR;1201,1
2,1,1,CC:54/189/50
2,1,16,CC:2/7/50
2,1,911,CC:2/-7/50
2,2,1,CC:106/359.3/50
2,2,16,CC:2/7.5/50
2,2,911,CC:2/-7.5/50
2,3,1,CC:22/146.5/50
2,3,16,CC:1/50/50
2,3,911,CC:1/-50/50
2,4,1,CC:26/86.4/50
2,5,1,CC:264/626.1/50
2,5,16,CC:2/3.3/50
2,5,911,CC:2/-3.3/50
2,6,1,CC:1296/4642.9/50
2,6,16,CC:53/213.7/50
2,6,911,CC:53/-213.7/50
2,7,1,CC:775/2110.7/50
2,7,16,CC:446/1461.8/50
2,7,911,CC:446/-1461.8/50
2,8,1,CC:102/468.6/50
2,8,16,CC:5/12.9/50
2,8,911,CC:5/-12.9/50
2,9,1,CC:6/3960.6/50
2,9,16,CC:6/328.5/50
2,9,911,CC:6/-328.5/50
2,10,1,CC:201/674.5/50
2,11,1,CC:139/454.2/50
2,11,16,CC:1/4.1/50
2,11,911,CC:1/-4.1/50
2,15,1,CA:3952/0
2,15,16,CA:168/0
2,15,911,CA:168/0
0,0,1,1;10,1;21,Z;22,28.07.10;23,00:07:00;24,O;25,0;27,3;51,0;11,testkasse;12,100;18,1;19,192.168.2.10;2,16.08.2010;3,13:57;4,34;5,VCOM 6.94;6,T7.0.2.0-112;8,16
2,7,1,CC:113/384.2/50

Das ist ein Warengruppenbericht einer Registrierkasse

Die ersten 2 Zeilen ist die Header Info der jeweiligen Kasse

Wenn ich mir genau die dritte Zeile anschaue:

2,1,1,CC:54/189/50

Das 1,1 bedeuted das dass die erste Warengruppe mit den Endbetrag von 189€ gebucht worden ist
dann folgenden 2 Zeilen sind Storno Infos die keiner benötigt...

dann gehts weiter mit

2,2,1,CC:106/359.3/50

Das wäre jetzt also die 2te Warengruppe mit den Wert von 359.30

usw.

die Excel Datei sollte dann oder auch eine weitere Textdatei das ist egal...
sollte dann so aussehen

1;189
2;359.3
...


noch eine kleine besonderheit wo ich überhaupt nicht weiss wie mann das löst ist,
wie mann im Beispiel sieht das z.B. die Warengruppe 12 / 13 /14 nicht gebucht wurde!


das aber z.B am nächsten Tag der Fall sein könnte.


Ich hoffe ich konnte das ganze halbweg verständlich rüberbringen und hoffe ihr könnt mir dabei helfen

besten Dank im Voraus
Mitglied: bastla
16.08.2010 um 18:41 Uhr
Hallo berni3487 und willkommen im Forum!

Im einfachsten Fall wäre das eine Zeile (zum Testen direkt in der CMD-Shell, Daten werden aus der Datei "Kasse.txt" gelesen):
for /f "tokens=2,5 delims=,/" %i in ('findstr /v "testkasse" "Kasse.txt"') do @echo %i;%j
Eine CSV-Datei wird daraus, wenn am Ende noch zB ">>Kasse.csv" angefügt wird.

In dieser Minimalvariante werden einfach die jeweiligen Tages-Header (besteht allerdings lt Deinem Beispiel nur aus 1 Zeile) herausgefiltert (wie anderenfalls damit umgegangen werden sollte, hast Du noch nicht erklärt) und die beiden relevanten Felder Nr 2 und 5 ausgegeben ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
16.08.2010 um 18:58 Uhr
Moin bernie3487,

ausgesuchte Teile deines Konzepts sind völlig einleuchtend und fast schon selbsterklärend.

Aber zu kleineren Nebenschauplätzen habe ich Nachfragen.

aber bei folgender Aufgabenstellung muss ich leider passen.
Was genau meinst du mit "Aufgabenstellung"?

Ist denn wirklich der große Plan, dass du jeden Tag wieder eine Detailbuchungen-Datei auf ein paar spärliche Summenzeilen zusammendampfst und dafür jeden Tag wieder eine neue Text/Csv/Excel-datei erzeugst?

Wenn ja... hat der Input ( bei dir vorsichtig mit "die Datei" umschrieben) eine Namenskonvention, z.B. die heissen Immer "FromSaschaWithLove.txt" oder Umsatz20100816.csv"?

Sollen neu erzeugte Dateien auch irgendwie heissen oder soll ein Zufallswert als Vorname dienen? (Wenn Zufallswert: reicht es 5stellig oder sind 128 Stellen sinnvoller?)

Oder soll alles (bzw. alles pro Woche, alles pro Monat,...) in EINE Excel-Tabelle und jeweils in eine Spalte?

Was soll dann weiter mit den Daten passieren - gehen die paar Umsatz-Ergebniszahlen direkt bei der Cheffin aufs iPhone oder liegen die erstmal einfach so da?

WoherTF soll irgendwer/irgendwas "wissen" oder "erkennen", für welche Warengruppen heute keine Buchungen da sind, aber morgen vielleicht?
Vielleicht wird ja Artikelgruppe Fisch nur Donnerstags & Freitags verkauft und Weihnachtsbäume fast das ganze Jahr nicht... aber Ende des Jahres wie doll.

Wissen selbst die 5 Wirtschaftsweisen nicht so genau - wie soll ein mickriger Batch das vorausahnen?

Bitte tritt erst noch mal einen Schritt zurück, bevor wir uns mit der Uhrmacherlupe über einzelne Token-Zerlegungen beugen und skizzier mal den Prozess.

["Die Daten fallen unerwartet jeden Tag außer Sonntag ind das Verzeichnis XZ, haben den Namen ...bla... und am Ende der Reise sollen die Tages-/Wochen-/Monatsdaten..weitergehen an ...ABC... .., weil damit ...sülzdibülz... getätigt werden muss..."]

Grüße
Biber
Bitte warten ..
Mitglied: berni3487
16.08.2010 um 19:41 Uhr
Sorry ich versuch nochmal von Vorne:

Die Kasse wird täglich von einen speziellen Programm ausgelesen und die Warengruppenumsätze gespeichert.
Am Ende jeden Monats wird dann die gepostete Textdatei erstellt d.h das ganze wird monatlich gemacht!

Diese Textdatei hatt immer dieslebe Bezeichnung.

Der Name der neu erzeugten datei ist egal

Ergebnis sollte eine CSV Datei oder Excel Tabelle sein die die oben gewünschten Werte ausgibt, Spalte A Warengruppenummer Spalte B den Wert oder für CSV 1;189.

Diese Datei soll am PC irgendwo gespeichert werden!

Das mit den Vorausahnen :
Wenn z.B.: 13,1 nicht in der Export datei, dann eine Null ausgeben...
Bitte warten ..
Mitglied: berni3487
16.08.2010 um 20:16 Uhr
Zitat von bastla:
Hallo berni3487 und willkommen im Forum!>
In dieser Minimalvariante werden einfach die jeweiligen Tages-Header (besteht allerdings lt Deinem Beispiel nur aus 1 Zeile)
herausgefiltert (wie anderenfalls damit umgegangen werden sollte, hast Du noch nicht erklärt) und die beiden relevanten
Felder Nr 2 und 5 ausgegeben ...

ja aber leider auch die nicht benötigten Zwischenzeilen,

(2,1,1,CC:54/189/50 danach kommt ja immer 1,16 und 1,911, 2;16 und 2;911...)

diese sollten nicht mitausgegeben werden

wenn das so erstmal funktioniert wäre das schon echt super!
Bitte warten ..
Mitglied: bastla
16.08.2010 um 20:21 Uhr
Hallo berni3487!

Dann erweitere die "Ausschlüsse" doch einfach:
for /f "tokens=2,5 delims=,/" %i in ('findstr /v ",16, ,911, testkasse" "Kasse.txt"') do @echo %i;%j
Grüße
bastla
Bitte warten ..
Mitglied: berni3487
16.08.2010 um 22:15 Uhr
Hab das ganze getestet echt perfekt genau so wie ich es haben wollte

Ich muss jedoch nochmal aus interesse fragen:

Normalerweise kommuliert das Programm die Einzelnen Tage hin und wieder kommt es aber dazu das die Lesung pro Tag in der TXT Datei stehen
ich müsste also alle Warengruppen nochmals addieren den laut unserer Testdatei Hab ich folgendes Ergebnis:

1;189
2;359.3
3;146.5
4;86.4
5;626.1
6;4642.9
7;2110.7 --> !!!
8;468.6
9;3960.6
10;674.5
11;454.2
15;0
7;384.2 -->!!!

Und könnten wir mehrere Kassen auch ausfiltern? und jeweils eine csv daraus machen? (Kasse1.csv, Kasse2.csv)
Denn im Header stett ja die Info der Kasse

ein Beispieldatei wäre wie folgt:

0,0,1,1;10,1;21,Z;22,27.07.10;23,23:00:00;24,O;25,0;27,3;51,1;11,Kasse1;12,100;18,1;19,192.168.2.10;2,16.08.2010;3,22:11;4,34;5,VCOM 6.94;6,T7.0.2.0-112;8,16;1001,1;1101,50/EUR;1201,1
2,1,1,CC:54/189/50
2,1,16,CC:2/7/50
2,1,911,CC:2/-7/50
2,2,1,CC:106/359.3/50
2,2,16,CC:2/7.5/50
2,2,911,CC:2/-7.5/50
2,3,1,CC:22/146.5/50
2,3,16,CC:1/50/50
2,3,911,CC:1/-50/50
2,4,1,CC:26/86.4/50
2,5,1,CC:264/626.1/50
2,5,16,CC:2/3.3/50
2,5,911,CC:2/-3.3/50
2,6,1,CC:1296/4642.9/50
2,6,16,CC:53/213.7/50
2,6,911,CC:53/-213.7/50
2,7,1,CC:775/2110.7/50
2,7,16,CC:446/1461.8/50
2,7,911,CC:446/-1461.8/50
2,8,1,CC:102/468.6/50
2,8,16,CC:5/12.9/50
2,8,911,CC:5/-12.9/50
2,9,1,CC:6/3960.6/50
2,9,16,CC:6/328.5/50
2,9,911,CC:6/-328.5/50
2,10,1,CC:201/674.5/50
2,11,1,CC:139/454.2/50
2,11,16,CC:1/4.1/50
2,11,911,CC:1/-4.1/50
2,15,1,CA:3952/0
2,15,16,CA:168/0
2,15,911,CA:168/0
0,0,1,1;10,2;21,Z;22,27.07.10;23,23:00:00;24,O;25,0;27,2;51,1;11,Kasse2;18,2;19,.;2,16.08.2010;3,22:11;4,34;5,VCOM 6.94;6,T7.0.2.0-112;8,16;1001,1;1101,50/EUR;1201,1
2,1,1,CC:37/129.5/50
2,1,16,CC:1/3.5/50
2,1,911,CC:1/-3.5/50
2,2,1,CC:26/102.6/50
2,3,1,CC:5/34.4/50
2,4,1,CC:3/9.1/50
2,5,1,CC:172/459.4/50
2,6,1,CC:448/1590.8/50
2,6,16,CC:3/13.2/50
2,6,911,CC:3/-13.2/50
2,7,1,CC:105/214.2/50
2,7,16,CC:2/6.8/50
2,7,911,CC:2/-6.8/50
2,8,1,CC:55/249.4/50
2,8,16,CC:1/4.6/50
2,8,911,CC:1/-4.6/50
2,9,1,CC:2/515.3/50
2,10,1,CC:50/165/50
2,11,1,CC:39/123.3/50
2,15,1,CA:1200/0
2,15,16,CA:11/0
2,15,911,CA:11/0

Wenn ich das noch hinbekommen würde....
Bitte warten ..
Mitglied: bastla
16.08.2010 um 23:01 Uhr
Hallo berni3487!
ich müsste also alle Warengruppen nochmals addieren
Das müsstest Du doch in Excel hinbekommen - Stichwort "SUMMEWENN()" (Rechnen mit Dezimalzahlen ist keine echte Stärke von Batch) ...
Und könnten wir mehrere Kassen auch ausfiltern?
Und wäre es nicht sinnvoller, vorweg schon zu verhindern, dass die Daten aller Kassen in einer einzigen Datei landen?

Falls Du Dich auf die Struktur der Textdatei wie oben dargestellt verlassen kannst, dann etwa so:
01.
@echo off & setlocal 
02.
pushd "D:\Kassendaten" 
03.
set "Ein=Kasse.txt" 
04.
 
05.
del *.csv 2>nul 
06.
set "Aus=" 
07.
for /f "tokens=2,5,22 delims=,;/" %%i in ('findstr /v ",16, ,911," "%Ein%"') do if "%%k" neq "" (set "Aus=%%k.csv") else (call :ProcessLine "%%i" "%%j") 
08.
popd 
09.
goto :eof 
10.
 
11.
:ProcessLine 
12.
>>"%Aus%" echo %~1;%~2 
13.
goto :eof
Ich habe unterstellt, dass Ausgangsdatei und Ergebnisse im Ordner "D:\Kassendaten" gespeichert sind/werden sollen, und dass es in diesem Ordner keine erhaltenswerten ".csv"-Dateien gibt (und daher vorweg alle ev noch vom vorigen Monat vorhandenen Dateien gelöscht werden können).

Grüße
bastla
Bitte warten ..
Mitglied: berni3487
17.08.2010 um 10:47 Uhr
Habe das ganze getestet.
Ich muss noch jetzt ein bisserl mit Excel basteln dann ist es Perfekt!

Vielen Vielen Dank!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch : alle Dateien eines Ordners bearbeiten (1)

Frage von deguonkel zum Thema Batch & Shell ...

Batch & Shell
gelöst Programme beenden Batch Dateien (3)

Frage von anmelder zum Thema Batch & Shell ...

Batch & Shell
Mit batch Datei auf Smartphone zugreifen (7)

Frage von daniel011 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Humor (lol)

Wohnt jemand in Belgien und kann nicht mehr ruhig ausschlafen?

(4)

Information von LordGurke zum Thema Humor (lol) ...

Sicherheits-Tools

Trendmicro OSCE und das Fall Creators Update Win10 RS3

(3)

Information von Henere zum Thema Sicherheits-Tools ...

Microsoft Office

Text in Zahlen umwandeln

Tipp von logische zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Microsoft Office
ICH BIN AM ENDE MEINES IT-WISSENS ANGELANGT!!!! (38)

Frage von 134537 zum Thema Microsoft Office ...

Windows Server
Gruppenrichtlinie greift nicht zu! (24)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (21)

Frage von sunics zum Thema Hosting & Housing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (16)

Frage von liquidbase zum Thema Voice over IP ...