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 Textdatei mit leeren Feldern umwandeln

Mitglied: stoner

stoner (Level 1) - Jetzt verbinden

14.08.2006, aktualisiert 18.08.2006, 3716 Aufrufe, 9 Kommentare

Hallo zusammen,

ich möchte eine Textdatei (Gebührendatensätze aus einer TK Anlage) per batch umwandeln damit ich sie in eine Firebird Datenbank einlesen kann. Mit Hilfe dieses Forums habe ich schon einiges gelöst, leider komme ich nun nicht mehr weiter:

Die ursprüngliche Datei hat als Trennzeichen Semikolon, mein Problem ist nun, daß einige Felder (je nach Art der Verbindung) manchmal gefüllt sind und manchmal nicht:

10.08.06;08:40:09;1;11;;00:01:14;0943211234;;2;;;0;1;
10.08.06;08:45:36;1;11;00:06;00:02:48;;;1;;;;;
usw.

mit:

FOR /F "tokens=1-13 delims=;" %%a IN (%1) DO echo '%%a','%%b',%%c,%%d,%%e,%%f,%%g,%%h,%%i,%%j,%%k,%%l,%%m >> temp.txt

werden nun die leeren Felder übersprungen, und je nach Verbindungsart verschiebt sich das Ganze.
Weis hier jemand eine Lösungsmöglichkeit?

Besten Dank schon mal,


Frank
Mitglied: miniversum
14.08.2006 um 21:13 Uhr
Ich verstehs nicht ganz tut mir leid. Was soll den als Ergebnis rauskommen bzw. in der Datei stehen?
miniversum
Bitte warten ..
Mitglied: stoner
14.08.2006 um 21:20 Uhr
Hi miniversum,

voerst sollen die Daten nur in das richtige Format, Trennzeichen Komma und einige Felder mit Hochkomma eingegrenzt.
Am Ende sollen dann die Daten per Batch komplett in die Datenbank eingelesen werden.

Frank
Bitte warten ..
Mitglied: miniversum
14.08.2006 um 21:34 Uhr
Na das Funktioniert doch?
Also bei mir kommt nach deiner Forschleife folgendes raus:

'10.08.06','08:40:09',1,11,00:01:14,0943211234,2,0,1,,,,
'10.08.06','08:45:36',1,11,00:06,00:02:48,1,,,,,,

Soll das Ergebnis den anders aussehen?
Wenn ja mach mal ein Beispiel.

miniversum
Bitte warten ..
Mitglied: stoner
14.08.2006 um 21:51 Uhr
genau hier ist das Problem, es gehen alle leeren Felder verloren, und somit kann ich keine Zuordnung zu den felder der Firebird db mehr machen.
Ich bräuchte in jeder Zeile immer alle Felder (kommagetrennt) damit ich eine feste Zuordnung machen kann.

'10.08.06','08:40:09',1,11,,'00:01:14',0943211234,,2,,,0,1,
'10.08.06','08:45:36',1,11,'00:06','00:02:48',,,1,,,,,

Edit: anscheinend wird das Format ein bischen durcheinandergewürfelt

Frank
Bitte warten ..
Mitglied: Biber
14.08.2006 um 23:15 Uhr
Moin stoner,

auch dafür gibt es eine Strategie...

wenn Deine Zeile so aussieht:
10.08.06;08:45:36;1;11;00:06;00:02:48;;;1;;;;;

und Du diese Zeile in eine Variable packst:
01.
set zeile=10.08.06;08:45:36;1;11;00:06;00:02:48;;;1;;;;;
...dann ersetze alle aufeinanderfolgenden Trennzeichen (z.B.";") durch Trennzeichen-Dummy-Trennzeichen.
Wobei "Dummy" ein Zeichen ist, dass NIE (oder eigentlich nie *gg) in einer Zeile vorkommt, z.B. ein "@".

Auf bätschisch also
01.
.. 
02.
set zeile=10.08.06;08:45:36;1;11;00:06;00:02:48;;;1;;;;; 
03.
set zeile=%zeile:;;=;@;% 
04.
REM %zeile% ist jetzt "10.08.06;08:45:36;1;11;00:06;00:02:48;@;;1;@;;@;;" , da nicht alle ";;" ersetzt wurden. 
05.
REM Warum, das leuchtet beim kurzen Nachdenken aber ein... 
06.
REM ...also machen wir das dreimal: 
07.
set zeile=%zeile:;;=;@;% 
08.
set zeile=%zeile:;;=;@;% 
09.
...
Und jetzt das Ganze in Deinem Batch:
01.
.. -------- ungetesteSkizze.bat 
02.
REM ..hier bedeutet Parameter 1 (%1) noch: NameDerInputdatei.xyz 
03.
... 
04.
FOR /F "delims=" %%a IN (%1) DO call :NormalizeIt %%a 
05.
goto :eof 
06.
 
07.
:normalizeIt [parameter 1 ist die ´komplette Zeile] 
08.
set zeile=%1  
09.
set zeile=%zeile:;;=;@;% 
10.
REM ...machen wir das dreimal: 
11.
set zeile=%zeile:;;=;@;% 
12.
set zeile=%zeile:;;=;@;% 
13.
FOR /F "tokens=1-13 delims=;" %%a IN (%1) DO echo '%%a','%%b',%%c,%%d,%%e,%%f,%%g,%%h,%%i,%%j,%%k,%%l,%%m >> temp.txt 
14.
goto :eof
Hope That Helps
Biber
Bitte warten ..
Mitglied: stoner
15.08.2006 um 02:27 Uhr
Hallo Biber,

erstmal besten Dank für die Antwort, aber irgentwie komm ich nicht ganz klar damit:

@echo off
FOR /F "delims=" %%a IN (%1) DO goto normalize %%a
goto :eof
:normalize
set zeile=%1
set zeile=%zeile:;;=;0;%
set zeile=%zeile:;;=;0;%
set zeile=%zeile:;;=;0;%
FOR /F "tokens=1-13 delims=;" %%a IN (%1) DO echo '%%a','%%b','%%c','%%d','%%e','%%f','%%g','%%h','%%i','%%j','%%k','%%l','%%m' >> gezout.txt
goto :eof

ergibt das gleiche wie ohne normalize. Ich habe das ganze von hinten bis vorne durchgespielt, aber irgentwo ha ich nen hänger, es ergibt alles immer das gleiche:

'13.08.06','18:31:00','1','11','00:18','00:00:00','099221123410','2','0','1','','',''
'14.08.06','09:28:52','1','11','00:07','00:00:00','099211239410#','2','0','1','','',''
'14.08.06','10:19:15','1','11','00:07','00:03:02','1','','','','','',''

Es sollten alle Felder in Hochkomma stehen, und leere Felder sollten mit '0' gefüllt werden.
Besten Dank schon mal für eure Hilfe,

n8 Frank
Bitte warten ..
Mitglied: Biber
15.08.2006 um 19:48 Uhr
Moin stoner,

dann versuchs hiermit:
[Inputdate heißt bei mir Stoner.In; Outputdatei stoner.Out]
01.
::---------stoner.bat parameter1=Inputdatei 
02.
@echo off & setlocal 
03.
del stoner.out >nul 
04.
%JustADebugLine% echo Input %: & type %1 
05.
FOR /F "delims=" %%a IN (%1) DO call :normalize %%a 
06.
%JustADebugLine% echo Output : & type stoner.Out  
07.
goto :eof 
08.
:normalize 
09.
set "zeile=%*" 
10.
set zeile=%zeile:;;=;0;% 
11.
set zeile=%zeile:;;=;0;% 
12.
set zeile=%zeile:;;=;0;% 
13.
FOR /F "tokens=1-13 delims=;" %%a IN ("%zeile%") DO (  
14.
 echo '%%a','%%b','%%c','%%d','%%e','%%f','%%g','%%h','%%i','%%j','%%k','%%l','%%m'>>stoner.Out 
15.
16.
goto :eof
Demo am CMD-Prompt:
01.
$cmd$stoner stoner.In 
02.
Input stoner.In: 
03.
10.08.06;08:40:09;1;11;;00:01:14;0943211234;;2;;;0;1; 
04.
10.08.06;08:45:36;1;11;00:06;00:02:48;;;1;;;;; 
05.
Output: 
06.
'10.08.06','08:40:09','1','11','0','00:01:14','0943211234','0','2','0','0','0','1' 
07.
'10.08.06','08:45:36','1','11','00:06','00:02:48','0','0','1','0','0','0','0'
Gruß
Biber
Bitte warten ..
Mitglied: stoner
18.08.2006 um 20:07 Uhr
Hi Biber,

sorry, hatte die letzten Tage Stress aber - es klappt!
Besten Dank, 100% das was ich brauche, Thx.


Ciao, Frank
Bitte warten ..
Mitglied: Biber
18.08.2006 um 20:12 Uhr
Moin stoner,

dann setz ich den Beitrag auf "Gelöst" und mache ihn dicht.
Rechtzeitig vor dem Wochenende.

Ciao dito
Frank
Bitte warten ..
Ähnliche Inhalte
Datenbanken
SQL-Abfrage und leere Felder vermeiden
gelöst Frage von zwangseinweisungDatenbanken12 Kommentare

Hallo, ich mache grade eine Ausbildung zum Fi-Si und vor dem Weihnachtsurlaub haben wir im Fach Datenbanken noch eine ...

Microsoft Office

Access Datenbank darf nicht weiter machen solange ein Feld leer bleibt

Frage von 117799Microsoft Office16 Kommentare

Liebe Freunde von Datenbanken, ich bastle für unsere Firma gerade an einem Ausfüllbarem Formular in Access, ohne das ich ...

Batch & Shell

PowerShell Array ind String umwandeln und in Textdatei ausgeben

gelöst Frage von derhoeppiBatch & Shell8 Kommentare

Hallo, folgende Thematik habe ich heute vor mir. Ich habe ein Array mit Integer-Werten. Die Größe des Array ist ...

Microsoft Office

Word2010: Serienbrief Zeile bei leeren Feld überspringen innerhalb einer Tabelle

Frage von dafdagMicrosoft Office1 Kommentar

Hallo zusammen, ich habe ein Word2010 Serienbrief das mit einer Excel Datenquelle verknüpft ist. Sobald ein leeren Datensatz vorkommt ...

Neue Wissensbeiträge
Windows Server

SBS 2011: Installation von KB4457144 schlägt beim Reboot fehl - Von Dienst gesperrte Schriftart ursächlich

Tipp von the-buccaneer vor 1 StundeWindows Server

Moinsen zusammen! Das hat mich einige graue Haare gekostet: Ein SBS 2011 weigerte sich schon im August, das monatl. ...

Windows Netzwerk
Browser-Lags und IPv6
Erfahrungsbericht von NixVerstehen vor 7 StundenWindows Netzwerk1 Kommentar

Hallo zusammen, wir betreiben als kleines Speditionsunternehmen ein überschaubares Windows-Netzwerk mit Win10-Clients sowie einem Server 2016 Essentials als "eierlegende ...

Humor (lol)

Erstaunlich, Windows mit extremer Laufzeit (Server) lol

Tipp von mathu vor 9 StundenHumor (lol)5 Kommentare

Was es so alles gibt. :-)

Windows Netzwerk

CGM Praxisarchiv funktioniert auf Clients nach Update auf 4.14 nicht mehr

Tipp von MOS6581 vor 1 TagWindows Netzwerk

Moin, ein Kunde setzt das CGM-Praxisarchiv ein. Mehrplatzinstallation mit SQL-Server. Nachdem letzte Woche auf die 4.14 aktualisiert wurde, funktionierte ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V33 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

LAN, WAN, Wireless
Kombiniere mehrere 4G Router zu einem Netzwerk - Anwendung kleine LAN (10-20 Leute)
Frage von HulkTheHeroLAN, WAN, Wireless24 Kommentare

Guten Mittag liebes Administrator - Fourm, ich hoffe ich habe das richtige Thema ausgewählt - ansonsten bitte gerne verschieben ...

Windows Server
Fileserver von 2012 R2 auf 2012R2
gelöst Frage von ThabeusWindows Server23 Kommentare

Moin moin, leider war in der Vergangenheit der Fokus des Betriebs nicht auf Langfristigkeit ausgelegt. Daher stehe ich jetzt ...

Router & Routing
Größere Zahl VPN-Verbindungen mit Fritz-Box einrichten
Frage von miscmikeRouter & Routing15 Kommentare

Hallo Zusammen, ich supporte verschiedene Kunden mit bestehenden LAN-LAN-Kopplungen via FritzBox (7490, FritzOS 7.01) . Anwendungen sind z.B. Kaspersky-KSC ...