infowars
Goto Top

Zahlen aus Textdatei auslesen und exportieren

Moin,
ich möchte aus einer Textdatei Zahlen auslesen und diese in eine andere Datei exportieren.
Das Problem daran ist folgendes:
Die Zahlen der Textdatei liegen zum Teil so vor :

#Kommentar
die zahl 1.2
#Kommentar
die zahl 2.3.4
#Kommentar
die Zahl 3.4.5
#Kommentar
die Zahl 4.5
#Kommentar
usw.

und sollen dann in dieses Format gebracht werden, mit einer 1 und einem Leerzeichen, gefolgt von den Zahlen :

1 1.2.0.0 1.2.255.255
1 2.3.4.0 2.3.4.255
1 3.4.5.0 3.4.5.255
1 4.5.0.0 4.5.255.255

Das lässt sich doch bestimmt mit einer Batch oder so lösen.
Möglicherweise über einen Export in eine Tabelle ?
Leider bin ich kein Batch-Guru, kann mir einer auf die Sprünge helfen ?
MfG

Content-Key: 223090

Url: https://administrator.de/contentid/223090

Printed on: April 26, 2024 at 18:04 o'clock

Member: bastla
bastla Nov 27, 2013 updated at 12:30:35 (UTC)
Goto Top
Hallo infowars!

Auf die Schnelle (und relativ "dirty" face-wink) etwa so:
@echo off & setlocal
set "Quelle=D:\TextMitZahlen.txt"  
set "Ziel=D:\NurZahlen.txt"  

del "%Ziel%" 2>nul  
for /f "delims=" %%i in ('findstr /bv "#" "%Quelle%"') do call :ProcessLine "%%i"  
goto :eof

:ProcessLine
for %%a in (%~1) do set "Zahl=%%a"  
for /f "tokens=1-3 delims=." %%a in ("%Zahl%") do (  
    if "%%c" neq "" (  
        >>"%Ziel%" echo 1 %%a.%%b.%%c.0.%%a.%%b.%%c.255  
    ) else (
        if "%%b" neq "" (  
            >>"%Ziel%" echo 1 %%a.%%b.0.0.%%a.%%b.255.255  
        ) else (
                >>"%Ziel%" echo 1 %%a.0.0.0.%%a.255.255.255  
        )
    )
)
goto :eof
Grüße
bastla
Member: Endoro
Endoro Nov 27, 2013 updated at 12:45:26 (UTC)
Goto Top
Hey, noch ne Lösung:
@ECHO OFF &SETLOCAL
(for /f "eol=#delims=" %%a in (file) do (  
	set "line=%%a"  
	SETLOCAL ENABLEDELAYEDEXPANSION
	set "line=!line:.=,!"  
	for %%b in (!line!) do (
		echo(%%b|findstr /br "[0-9][0-9]*" >nul&& (  
			set "part1=!part1!%%b."  
			set /a cnt+=1
		)
	)
	set "part2=!part1!"  
	for /l %%b in (!cnt!, 1, 3) do set "part1=!part1!0."&set "part2=!part2!255."  
	echo(1 !part1:~0,-1! !part2:~0,-1!
	endlocal
))>file.new
type file.new
lg.
Member: infowars
infowars Nov 27, 2013 at 12:49:47 (UTC)
Goto Top
Danke, ich werds heute abend gleich mal testen.
MfG
Member: infowars
infowars Nov 27, 2013 updated at 17:07:18 (UTC)
Goto Top
@bastla
Bei deiner Batch werden die Zahlen nicht durch ein Leerzeichen getrennt, sondern durch einenPunkt, aber die Batch läuft durch wie sie soll:
Also von:
#Kommentar
1.2.3
zu
1 1.2.3.0.1.2.3.255

@Endoro
Super, läuft durch.

Nur habe ich bei beiden Varianten noch ein Leerzeichen hinter den formatierten Zahlen
Thx a lot
MfG
Member: bastla
bastla Nov 27, 2013 at 17:13:57 (UTC)
Goto Top
Hallo infowars!
Bei deiner Batch werden die Zahlen nicht durch ein Leerzeichen getrennt, sondern durch einenPunkt
So sah doch auch Deine Vorgabe aus ...
Nur habe ich bei beiden Varianten noch ein Leerzeichen hinter den formatierten Zahlen
Schau mal, ob in den Zeile 13, 16 und 18 bei meinem Ansatz (dort kannst Du bei Bedarf auch die Punkte durch Leerzeichen ersetzen) bzw 14 bei Endoro dieses Leerzeichen am Ende zu finden ist.

Grüße
bastla
Member: infowars
infowars Nov 27, 2013 at 17:39:04 (UTC)
Goto Top
Sorry, hab mich falsch ausgedrückt, ich meine es sieht so aus statt so:

1 1.2.0.0.1.2.255.255
1 1.2.0.0 1.2.255.255

Dass mit den Leerzeichen werde ich schon hinkriegen.
Passt alles, danke !
MfG
Member: bastla
bastla Nov 27, 2013 at 17:48:58 (UTC)
Goto Top
Hallo infowars!

Und ich habe das Leerzeichen zwischendurch übersehen - auch sorry face-sad

Ersetze den Punkt nach der jeweils letzten 0 in den oben genannten Zeilen durch ein Leerzeichen.

Grüße
bastla