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, 4251 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Systemdateien
gelöst Registry-Schlüssel per Batch auslesen und in Datei schreiben (9)

Frage von Philzip zum Thema Windows Systemdateien ...

Batch & Shell
gelöst Batch ausgabe zeilenweise stat spaltenweise ausgeben (4)

Frage von sugram zum Thema Batch & Shell ...

Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
Suche passender Treiber (12)

Frage von stolli zum Thema Windows Server ...

Peripheriegeräte
Wlan stört Funkmaus (11)

Frage von Falaffel zum Thema Peripheriegeräte ...

Peripheriegeräte
gelöst USB Festplatte verliert Laufwerksbuchstabe (9)

Frage von cese4321 zum Thema Peripheriegeräte ...