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

Codepage bei TXT Datei vor Bearbeitung umwandeln - Befehlszeilentool oder

Frage Entwicklung Batch & Shell

Mitglied: Lyriker

Lyriker (Level 1) - Jetzt verbinden

10.06.2013, aktualisiert 12.06.2013, 1561 Aufrufe, 12 Kommentare

Hallo!

ich habe wieder mal Maschinendaten, die durch den Batch Mixer gejagt werden sollen.

Leider haben diese dafür aber das gänzlich falsche Format, die Dateien sind mit UCS-2 Little Endian codiert.

Kennt jemand eine Methode oder vielleicht auch ein Befehlszeilentool, das mir die Datei davor auf UTF-8 oder ähnlich Batch lesbares umwandelt?

Batch als Beispiel:

Hier zieht er sich die txt-Dateien:
01.
@echo off & setlocal 
02.
set "Dateien=*.txt" 
03.
set "Sammel=export/export.csv" 
04.
echo "Maschine;Datum;Zeit;ProOptID;Breite;Höhe;Stückzahl;Status">>"%Sammel%" 
05.
for /f " delims=" %%i in ('dir /b /od "%Dateien%"') do ( 
06.
set "battemp=%%i" 
07.
call SendMadaStuerz.bat %battemp% 
08.
)
Hier wertet er durch den Aufruf die Datei aus und schriebt Sie in eine Sammeldatei, lässt dabei die ersten 6 Zeilen aus:
01.
@echo off & setlocal 
02.
set "Sammel=export/export.csv" 
03.
set "Erste=" 
04.
for /f "delims=" %%i in ("%battemp%") do set "Erste=%%i" 
05.
if not defined Erste goto :weiter 
06.
for /f "usebackq tokens=1* delims=: " %%i in ("%Erste%") do ( 
07.
    for /f "tokens=1,2" %%k in ("%%j") do ( 
08.
        set "reihe2=%%k" 
09.
		echo %%k 
10.
		set "DateiDatum=%%k" 
11.
		goto :weiter 
12.
13.
14.
REM copy "%Erste%" "%Sammel%" 
15.
:weiter 
16.
for /f "skip=6 usebackq tokens=* delims=|" %%i in ("%battemp%") do ( 
17.
	echo|set /p ="Stuerz;%DateiDatum%;">>"%Sammel%" 
18.
	echo %%i >>"%Sammel%" 
19.
 
20.
)

Ein beispiel der Maschinendaten, die mir leider nur in UCS-2 Little Endian vorliegen:
01.
Datum: 20130411 
02.
Maschine: SE-2KPH-CNC, 5736 
03.
Herstellung: Stürtz Maschinenbau GmbH 
04.
Kunde: 
05.
 
06.
Zeit;ProOptID;Breite;Höhe;Stückzahl;Status 
07.
04:12:00;0;0;0;0;Automatik stop 
08.
04:12:01;0;0;0;0;Maschine On 
09.
04:12:02;0;0;0;0;Not-Aus 
10.
04:19:48;0;0;0;0;Automatik start 
11.
04:27:08;0;10250;20900;349201; 
12.
04:30:37;0;10250;20900;349202; 
13.
04:32:14;0;9000;21500;349203; 
14.
04:33:58;0;6700;4500;349204; 
15.
04:35:24;0;6700;4500;349205; 
16.
04:36:36;0;20900;16900;349206; 
17.
04:40:50;0;13850;18550;349207; 
18.
04:42:15;0;13750;18530;349208; 
19.
04:43:22;0;13850;18550;349209; 
20.
04:47:02;0;13750;18520;349210;

Anlage:

einige der Dateien:

https://docs.google.com/file/d/0B5CvnhRm_yK_M0xwbXlHLTJfdkE/edit?usp=sha ...

Mitglied: Endoro
10.06.2013 um 18:37 Uhr
Hi,

also bei mir klappt das so:

01.
for /f "delims=" %%i in ('type file') do echo %%i
Gruss!
Bitte warten ..
Mitglied: Lyriker
11.06.2013 um 09:31 Uhr
sorry das habe ich nicht ganz verstanden...

was macht das 'type file' ??
Bitte warten ..
Mitglied: Endoro
11.06.2013 um 10:30 Uhr
Grob zusammengefasst gibt type eine Textdatei auf die Standard-Ausgabe, in diesem Fall die Forschleife, aus.
Also ganz ähnlich wie cat unter Unix.
Bitte warten ..
Mitglied: Lyriker
11.06.2013 um 13:43 Uhr
Ich habe mich vielleicht falsch ausgedrückt, oder meine Kenntnisse sind gegenüber Deinem zu gering ;)

Das Script funktioniert Tadellos, sofern ich vorher die TXT-Dateien in UTf-8 umwandle.

Die Text Dateien, die mit mit UCS-2 Little Endian codiert sind, werden nicht ausgelesen und kann so nicht überarbeitet werden.

mit

01.
for /f "delims=" %%i in ('type file') do echo %%i
habe ich leider nichts erreicht.

Würdest das bitte nochmals für einen Blöden erklären, oder mit einem Beispiel zeigen?

Danke vielmals!
Bitte warten ..
Mitglied: Endoro
11.06.2013 um 13:57 Uhr
Wenn ich hier so ein UCS-2 Little Endian file habe, bekomme ich das so ausgelesen.

Du kannst deins ja mal irgendwo hochladen, an besten gepackt.
Dann kann ich es mir ansehen.
Bitte warten ..
Mitglied: rubberman
11.06.2013, aktualisiert um 18:26 Uhr
File ist englisch für Datei. Endoro setzt voraus, dass du "file" durch den Name deiner UCS-2 Datei ersetzt oder eben durch eine Variable, die den Name repräsentiert.
for /f "delims=" %%i in ('type "meine_UCS-2_Datei.txt"') do echo %%i
... wenn sie denn so heißen sollte. Ein Blick in die Hilfe zu TYPE hätte dir das aber längst verraten ...

BTW: eine Umwandlung von UCS-2 in UTF-8 ist mit Batch nicht möglich (mit VBScript schon), da entsprechende Codepages keinen vollständigen Support bieten. Wäre auch völlig unsinnig, denn UTF-8 enthält Kodierungen von Zeichen, wie Umlauten, die ohne TYPE wiederum nicht verarbeitbar sind. Hier müsstest du schon eine Codepage wählen, die nur maximal 1 Byte Breite pro Zeichen hat.

Grüße
rubberman
Bitte warten ..
Mitglied: Endoro
11.06.2013 um 19:01 Uhr
Der Hexdump müsste etwa so aussehen:
0000000: ff fe 44 00 61 00 74 00 75 00 6d 00 3a 00 20 00  ..D.a.t.u.m.:. . 
0000010: 32 00 30 00 31 00 33 00 30 00 34 00 31 00 31 00  2.0.1.3.0.4.1.1. 
0000020: 0d 00 0a 00 4d 00 61 00 73 00 63 00 68 00 69 00  ....M.a.s.c.h.i. 
0000030: 6e 00 65 00 3a 00 20 00 53 00 45 00 2d 00 32 00  n.e.:. .S.E.-.2. 
0000040: 4b 00 50 00 48 00 2d 00 43 00 4e 00 43 00 2c 00  K.P.H.-.C.N.C.,. 
0000050: 20 00 35 00 37 00 33 00 36 00 0d 00 0a 00 48 00   .5.7.3.6.....H. 
0000060: 65 00 72 00 73 00 74 00 65 00 6c 00 6c 00 75 00  e.r.s.t.e.l.l.u. 
0000070: 6e 00 67 00 3a 00 20 00 53 00 74 00 fc 00 72 00  n.g.:. .S.t...r. 
0000080: 74 00 7a 00 20 00 4d 00 61 00 73 00 63 00 68 00  t.z. .M.a.s.c.h. 
0000090: 69 00 6e 00 65 00 6e 00 62 00 61 00 75 00 20 00  i.n.e.n.b.a.u. . 
00000a0: 47 00 6d 00 62 00 48 00 0d 00 0a 00 4b 00 75 00  G.m.b.H.....K.u. 
00000b0: 6e 00 64 00 65 00 3a 00 0d 00 0a 00 0d 00 0a 00  n.d.e.:......... 
00000c0: 5a 00 65 00 69 00 74 00 3b 00 50 00 72 00 6f 00  Z.e.i.t.;.P.r.o. 
00000d0: 4f 00 70 00 74 00 49 00 44 00 3b 00 42 00 72 00  O.p.t.I.D.;.B.r. 
00000e0: 65 00 69 00 74 00 65 00 3b 00 48 00 f6 00 68 00  e.i.t.e.;.H...h. 
00000f0: 65 00 3b 00 53 00 74 00 fc 00 63 00 6b 00 7a 00  e.;.S.t...c.k.z. 
0000100: 61 00 68 00 6c 00 3b 00 53 00 74 00 61 00 74 00  a.h.l.;.S.t.a.t. 
0000110: 75 00 73 00 0d 00 0a 00 30 00 34 00 3a 00 31 00  u.s.....0.4.:.1. 
0000120: 32 00 3a 00 30 00 30 00 3b 00 30 00 3b 00 30 00  2.:.0.0.;.0.;.0.
Das ist problemlos mit type in ASCII umzuwandeln.

Gruss!
Bitte warten ..
Mitglied: rubberman
11.06.2013 um 19:20 Uhr
So sehe ich das auch
Bitte warten ..
Mitglied: Lyriker
11.06.2013 um 21:17 Uhr
Ich würde gerne die Datei hochladen , müsste aber euch noch bitten, bis morgen zu warten.

Nach 10 Stunden tüfteln war ich wohl neben mir. Jetzt verstehe ich was das File heissen sollte. Teste das morgen mal aus danke
Bitte warten ..
Mitglied: Lyriker
12.06.2013, aktualisiert um 11:14 Uhr
PS: Link zu den Dateien.. mit Type hatte ich leider (noch) keinen Erfolg
https://docs.google.com/file/d/0B5CvnhRm_yK_M0xwbXlHLTJfdkE/edit?usp=sha ...

Und ich habe leider keinen Einfluss auf die Quelle
Bitte warten ..
Mitglied: Endoro
12.06.2013 um 14:16 Uhr
Die Dateien haben dieses Format und sind mit type problemlos auzulesen. Ich bin nicht sicher, was du machst. Ich hab eine Kommandozeilensitzung mal auf Pastebin geladen: hier.

Also es ist zu schaffen

Gruss!
Bitte warten ..
Mitglied: Lyriker
12.06.2013 um 14:58 Uhr
hm 4ter Beitrag, sorry

ok habe es nun verstanden, nur mit der vorgebenen Lösung funktionierte das nicht

ich habe es durch type in eine temporäre Datei lesen lasen, die ich nach dem transfer lösche..

aber danke für den Tip!

PS:

Hier die Lösung falls es jemand interessiert ;) :
01.
@echo off & setlocal 
02.
set "Sammel=export/export.csv" 
03.
type %battemp%>>r_%battemp% 
04.
set "Erste=" 
05.
for /f "delims=" %%i in ("r_%battemp%") do set "Erste=%%i" 
06.
if not defined Erste goto :weiter 
07.
echo %Erste% 
08.
pause 
09.
for /f "usebackq tokens=1* delims=: " %%i in ("%Erste%") do ( 
10.
    for /f "tokens=1,2" %%k in ("%%j") do ( 
11.
        set "reihe2=%%k" 
12.
		echo %%k 
13.
		set "DateiDatum=%%k" 
14.
		goto :weiter 
15.
16.
17.
REM copy "%Erste%" "%Sammel%" 
18.
:weiter 
19.
echo test>>"%Sammel%" 
20.
for /f "skip=6 usebackq tokens=* delims=|" %%i in ("r_%battemp%") do ( 
21.
	echo|set /p ="Stuerz;%DateiDatum%;">>"%Sammel%" 
22.
	echo %%i >>"%Sammel%" 
23.
 
24.
)
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

Webentwicklung
gelöst HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei (6)

Frage von donnyS73lb zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...