Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 4256 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
gelöst Variable per Batch auslesen und in Registry schreiben (1)

Frage von Zendara zum Thema Batch & Shell ...

Batch & Shell
gelöst Fenstertitel von anderen Tasks per batch auslesen (3)

Frage von NetMare zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch: Textdatei Zeilenweise auslesen (2)

Frage von CreatorX zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

LAN, WAN, Wireless
Rogue Access Point (20)

Frage von Axel90 zum Thema LAN, WAN, Wireless ...

Webbrowser
Windows 7 unbeliebte Internetseite sperren (13)

Frage von Daoudi1973 zum Thema Webbrowser ...

E-Mail
Fake E-Mail in Outlook für Demonstartionszwecke (12)

Frage von sascha382 zum Thema E-Mail ...