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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 223090
Url: https://administrator.de/contentid/223090
Ausgedruckt am: 22.11.2024 um 06:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo infowars!
Auf die Schnelle (und relativ "dirty" ) etwa so:
Grüße
bastla
Auf die Schnelle (und relativ "dirty" ) 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
bastla
Hey, noch ne Lösung:
lg.
@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
Hallo infowars!
Grüße
bastla
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