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

Batch datei ausfiltern

Frage Entwicklung Batch & Shell

Mitglied: berni3487

berni3487 (Level 1) - Jetzt verbinden

16.08.2010, aktualisiert 18:21 Uhr, 3000 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
Windows 10
Mit einer batch Datei etwas in eine andere batch Datei schreiben und ausführen
Frage von RaphaelStockWindows 105 Kommentare

Hey Administratoren!! Ich habe ein Problem: Ich möchte alle 40 sek etwas in eine batch Datei schreiben und ausführen ...

Windows 7
Kopieren was in einer Datei steht (Batch-Datei)
Frage von helmuthelmut2000Windows 71 Kommentar

Hallo, Ich möchte folgendes machen, aber weis nicht genau wie ich das hinbekomme. Ich habe eine Text-Datei wo folgendes ...

Batch & Shell
Batch Datei zum verschieben von Dateien aus Unterordnern ?
gelöst Frage von Ghostrider1911Batch & Shell10 Kommentare

Hallo, ich bräuchte eine Batch Datei die Dateien aus Unterordnern verschiebt. Also ich habe folgende Verzeichniss Struktur: Z:\Dateien\Ordner1\M1\ Z:\Dateien\Ordnärx\M1\ ...

Batch & Shell
BATCH ini Datei Datei auslesen
gelöst Frage von Juergen42Batch & Shell2 Kommentare

Hallo zusammen, ich möchte eine ini Datei auslesen mit folgenden Aufbau INHALT DER INI ID=30 NAME="test1" PFAD="K:\Kontoauszug\Test1\*.pdf" PFAD_S="K:\Kontoauszug\Test1\Sicherung\" ID=28 ...

Neue Wissensbeiträge
DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 2 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 2 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 6 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 1 TagApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement17 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...