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

Text zeilenweise per Batch auslesen und anpassen bzw. umsortieren

Frage Entwicklung Batch & Shell

Mitglied: MarkusKirchler

MarkusKirchler (Level 1) - Jetzt verbinden

02.12.2009 um 16:45 Uhr, 4265 Aufrufe, 8 Kommentare

Hallo liebe Experten,

ich bin zwar ein recht erfahrener Administrator, aber mit Batch-Programmierung hatte ich bisher kaum etwas zu tun und werde es auch in Zukunft kaum haben, deshalb komme ich heute mit einer Bitte/Anfrage zu euch, die in den Foren nicht gern gesehen ist, aber mir fehlt einfach die Zeit, mich komplett in die Batchprogrammierung einzulesen. Vielleicht kann mir einer von euch Experten doch etwas helfen, zumindest das Grundgerüst des Programmes zusammenzustellen, nur gewisse Anpassungen würde ich dann sicher selber hinbekommen.

Die Problemstellung: Ich habe eine Stempeluhr, die mir ein txt-File generiert, das beliebig lang sein kann. Dieses txt-File müsste ich etwas umstruktieren, um es in mein Lohnbuchhaltungsprogramm einfügen zu können.

Meine Ausgangslage ist diese:
2816710662461201182609
2816710662461201182909
2819710662461202160409
2819710662471202160409

Aufgeteilt:
2816 71066 246 12 01 18 26 09
2816 = Userkodex
71066 = Firmenkodex (ist irrelevant)
246 = Eingang
247 = Austritt
12 = Monat
01 = Tag
18 = Stunde
26 = Minute
09 = Jahr



Jetzt bräuchte ich die Daten aber so:
01110207470000070000E09
01110207530000010000E09
01110207530000120000E09

Aufgeteilt:
01 11 02 07 47 000007 0000 E 09

01 = Firmenkodex (bleibt immer 01)
11 = Monat
02 = Tag
07 = Stunde
47 = Minute
000007 = Userkodex (ich habe hierbei eine "Übersetzungsliste", welche mir z. B. sagt: Userkodex 2816 im neuen File ist Userkodex 000007 im alten File. Hier müsste man also ein paar IF's einbauen)
0000 = Fülldaten, bleiben immer 0000
E = Eingang (gleiches Spiel hier: IF 246 then "E" elseif 247 then "U")
U = Austritt
09 = Jahr

Denkt ihr jemand bekommt das für mich hin? Wäre euch echt dankbar!!

Wenn ich noch irgendetwas klären muss, könnt ihr natürlich gerne jederzeit fragen.

Schöne Grüße aus dem verschneiten Südtirol

Markus
Mitglied: Miyamoto
02.12.2009 um 17:33 Uhr
Hi,
das muste doch das sein was du haben willst
01.
@ECHO OFF & setlocal enabledelayedexpansion  
02.
 
03.
for /f %%i in (D:\test.txt) do ( 
04.
echo %%i 
05.
 
06.
	set eingangsstring=%%i 
07.
 
08.
	set userkodex=!eingangsstring:~0,4! 
09.
	set firmenkodex=!eingangsstring:~4,5! 
10.
	set eingang=!eingangsstring:~9,3! 
11.
 
12.
	set monat=!eingangsstring:~12,2! 
13.
	set tag=!eingangsstring:~14,2! 
14.
	set stunde=!eingangsstring:~16,2! 
15.
	set minute=!eingangsstring:~18,2! 
16.
	set jahr=!eingangsstring:~20,2! 
17.
 
18.
	set neuerstring=01!monat!!tag!!stunde!!minute! 
19.
 
20.
	REM hier deine entscheidungstabenlle 
21.
 
22.
	set neuerstring=!neuerstring!____0000 
23.
        REM ___ ist Platzhalter für den fehlenden wert. 
24.
	if "!eingang!" == "246" ( 
25.
		set neuerstring=!neuerstring!E 
26.
27.
	if "!eingang!" == "247" ( 
28.
		set neuerstring=!neuerstring!U 
29.
30.
	 
31.
	set neuerstring=!neuerstring!!jahr! 
32.
echo !neuerstring! 
33.
echo. 
34.
 
35.
echo !neuerstring! >> D:\test2.txt 
36.
)
Bitte warten ..
Mitglied: MarkusKirchler
02.12.2009 um 17:47 Uhr
Hui, das scheint es schon zu 90% zu sein. Jetzt nur noch die IF für meinen String, eine Abfrage ob das File existiert und die alten Daten löschen, sobald sie im neuen File drinnen sind und alles da

Ich danke dir vielmals, ich denke jetzt schaffe ich es allein, vielen Dank für die kompetente Hilfe =)

PS: Ich lasse den Thread noch offen, sollte noch eine Frage auftauchen, sobald alles komplett ist markiere ich ihn als gelöst.

Markus
Bitte warten ..
Mitglied: MarkusKirchler
03.12.2009 um 15:16 Uhr
Hallo nochmal,

also ich hab das Programm jetzt soweit fertig, nur noch ein Problem hab ich. Und zwar hängt mir das Programm bei meinem definitiven File dann immer noch ein Leerzeichen hinten an jede Zeile dran und das mag das Lohnbuchhaltungsprogramm nicht. Wie bekomme ich dieses dämliche letzte Leerzeichen bloß weg?

Mein Programmcode:
01.
@ECHO OFF & setlocal enabledelayedexpansion  
02.
 
03.
for /f %%i in (C:\Programme\Datafox\DATAFO~1.27\Export\Zeitstempel.txt) do ( 
04.
echo %%i 
05.
 
06.
	set eingangsstring=%%i 
07.
 
08.
	set userkodex=!eingangsstring:~0,4! 
09.
	set firmenkodex=!eingangsstring:~4,5! 
10.
	set eingang=!eingangsstring:~9,3! 
11.
 
12.
	set monat=!eingangsstring:~12,2! 
13.
	set tag=!eingangsstring:~14,2! 
14.
	set stunde=!eingangsstring:~16,2! 
15.
	set minute=!eingangsstring:~18,2! 
16.
	set jahr=!eingangsstring:~20,2! 
17.
 
18.
	set neuerstring=01!monat!!tag!!stunde!!minute! 
19.
 
20.
	REM MITARBEITERTABELLE 
21.
	 
22.
	if "!userkodex!" == "2824" ( 
23.
		set userkodex=000001 
24.
25.
	if "!userkodex!" == "2818" ( 
26.
		set userkodex=000003 
27.
28.
	if "!userkodex!" == "2821" ( 
29.
		set userkodex=000004 
30.
31.
	if "!userkodex!" == "2828" ( 
32.
		set userkodex=000005 
33.
34.
	if "!userkodex!" == "2827" ( 
35.
		set userkodex=000007 
36.
37.
	if "!userkodex!" == "2817" ( 
38.
		set userkodex=000008 
39.
40.
	if "!userkodex!" == "2822" ( 
41.
		set userkodex=000009 
42.
43.
	if "!userkodex!" == "2816" ( 
44.
		set userkodex=000011 
45.
46.
	if "!userkodex!" == "2825" ( 
47.
		set userkodex=000013 
48.
49.
	if "!userkodex!" == "2829" ( 
50.
		set userkodex=000014 
51.
52.
	if "!userkodex!" == "2819" ( 
53.
		set userkodex=000015 
54.
55.
	if "!userkodex!" == "2823" ( 
56.
		set userkodex=000017 
57.
58.
	if "!userkodex!" == "2815" ( 
59.
		set userkodex=000018 
60.
61.
	if "!userkodex!" == "2830" ( 
62.
		set userkodex=000020 
63.
64.
 
65.
	set neuerstring=!neuerstring!!userkodex! 
66.
 
67.
	set neuerstring=!neuerstring!0000 
68.
 
69.
	if "!eingang!" == "246" ( 
70.
		set neuerstring=!neuerstring!E 
71.
72.
	if "!eingang!" == "247" ( 
73.
		set neuerstring=!neuerstring!U 
74.
75.
	 
76.
	set neuerstring=!neuerstring!!jahr! 
77.
echo !neuerstring! 
78.
echo. 
79.
 
80.
echo !neuerstring! >> "\\server\DATAFIL.txt" 
81.
82.
 
83.
REM HIER ALTE DATEI LEEREN 
84.
copy /y NUL "C:\Programme\Datafox\DATAFO~1.27\Export\Zeitstempel.txt" >NUL
Bitte warten ..
Mitglied: Biber
03.12.2009 um 15:21 Uhr
Moin MarkusKirchler,

Wie bekomme ich dieses dämliche letzte Leerzeichen bloß weg?
Schreibe es einfach gar nicht erst.

Und verwende bitte in Zukunft Codeformatierung.

Danke
Biber
Bitte warten ..
Mitglied: MarkusKirchler
03.12.2009 um 15:28 Uhr
Hallo Biber,

sorry, die Codeformatierung habe ich gesucht, aber leider nicht gefunden. Wie ist die hier am Board? [code] [/code]?

Zum Thema: Ich schreibe aber ja gar kein Leerzeichen in den String, das letzte Zeichen ist ja die Variable Jahr und die beinhaltet nur "09" und sonst nichts. Oder mach ich da was falsch?

Danke für die Hilfe!
Markus
Bitte warten ..
Mitglied: MarkusKirchler
03.12.2009 um 15:30 Uhr
Ach Mist, darauf hätte ich auch selber kommen können, dass ich das so machen muss:
01.
!neuerstring!>>"\\srv01\sistemi\PROFIS2\TIMA\DATAFIL.txt"
Jetzt klappt es Vielen Dank für den Wink mit dem Zaunpfahl!

Markus
Bitte warten ..
Mitglied: Miyamoto
03.12.2009 um 15:38 Uhr
Hi,
die Tags für die Formatierung stehen alle im den FAQs
http://www.administrator.de/index.php?faq=20#toc27

Gruß Miyamoto
Bitte warten ..
Mitglied: Biber
03.12.2009 um 16:14 Uhr
Moin MarkusKirchler,

Zitat von MarkusKirchler:
Ach Mist, darauf hätte ich auch selber kommen können, dass ich das so machen muss:
Keine Sorge - hier im Forum gebe ich gerne jedem die Zeit, selbst darauf zu kommen...

Konservativ wie ich bin, halte ich doch mehr von "nachhaltigem Lernen" als von diesem neumodischen RTL-Supernanny-pimp-my-life-Gelumpe.

Wenn du trotz Adventszeit noch etwas Gutes tun magst: Gehe noch ein letztes Mal auf deinen vorvorletzten Kommentar, "Editiere" ihn und probiere die bei uns im Forum vorgesehene < code > </ code > -Formatierung (ohne Leerzeichen) aus.

Danke und schönen Nachmittag
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Text Zeilenweise auslesen und variable überprüfen
Frage von BruendlBatch & Shell11 Kommentare

Moin Moin, ich habe eine Textdatei mit folgendem Inhalt: ich möchte jetzt gerne die beiden Werte, die von einem ...

Batch & Shell
Batch: Textdatei Zeilenweise auslesen
gelöst Frage von CreatorXBatch & Shell2 Kommentare

Hallo, ich weiß, zu dem Thema gibt es schon unzählige Threads. Ich hab auch einiges dazu gefunden und trotzdem ...

Batch & Shell
Batch Registry auslesen - anpassen
gelöst Frage von pi0h.kkBatch & Shell5 Kommentare

Hallo Zusammen, ich versuche seit einiger Zeit eine ausgelesen Reg-Datei anzupassen, sodass sie als *.ini von einer Applikation genutzt ...

Batch & Shell
Batch: Auslesen von Dateinamen aus Text und Kopieren dieser.
gelöst Frage von gumpo03Batch & Shell2 Kommentare

Hallo. Ich sitze seit ungefähr einer Stunde an einem Problem, dass ich gern endlich lösen würde: Ich habe eine ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 19 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 21 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

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

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

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

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.