
76623
18.03.2009, aktualisiert um 13:22:06 Uhr
Mit Batch mehrzeilige Spalte zeilenweise auslesen und Inhalt weiterverwenden...?
Hey Leute,
Auch wenn es schon -zig Beiträge ähnlicher Art gibt, iwie bin ich einfach zu unfähig die tw schon vorhandenen Lösungen an mein Batchfile anzupassen, liegt auch daran dass ich die FOR-Anweisung noch nicht zu 100% versteh, egal...
Der Titel sagt ja schon das Wesentliche, nun zu den Details:
Ich habe eine Textdatei(Bsp.txt) mit mehreren Zeilen die wie folgt formatiert ist
(reines Bsp, in Wirklichkeit handelt es sich um 100.000 Zeilen mit total unterschiedlichen Zahlen):
Mit Worten ausgedrückt: eine einzelne Spalte mit bekannter Zeilenanzahl
Bestimmte Zahlen/Zeilen möchte ich nun nacheinander auslesen um mit ihnen weiter zu arbeiten(im Prog unten ist diese "Verarbeitung" jetzt nur ein "echo" - rein der Einfachheit halber und um die Funktion zu testen. Tatsächlich folgen div. größer/kleiner Abfragen und dann entsprechende weitere Abläufe)
Mein BatchProg schaut derzeit wie folgt aus (an Bsp.txt angepasst):
Ergebniss dieses Ablaufes ist, dass ich 9x die Zahl 9 ausgespuckt bekomme, weil es einfach jedesmal die ganze spalte runterrattert.
Falls Unklarheiten, hier noch ne Bemerkung zum besseren Verständnis meines Anliegens:
WÜRDE meine Bsp.txt so formatiert sein (alle Werte in nur einer Zeile), ...
1 2 3 4 5 6 7 8 9
... so würde mein Batchprog wie gewünscht funktionieren(Ergebnis schaut hier so aus: nacheinander werden die Zahlen 1-9 ausgespuckt, danach pause und exit), und ich könnte mit Hilfe des %Counter%s auf das gewünschte Zeichen (z.B. 3. Zahl) zugreifen und damit bei Bedarf weiterarbeiten. (z.B. IF %counter%==3 SET irgendwas_1=%zahl%... IF irgendwas_1... etc)
Aber leider ist diese Formatierung bei meiner .txt nicht der Fall.
Das diese "tokens"-Zeichenabfrage jetzt irgendwie an den Zeilenumbrüchen scheitert ist mir schon klar, nur die Frage ist: Wie mach ich das auch meinem Batchfile klar?
Danke im Vorraus für euren PRODUKTIVEN Antworten
(especially dedicated for wannabe-DrHouse)
MfG, 5chweinsbraten
[Edit Biber] Code mit Code-Tags formatiert. [/Edit]^^
Auch wenn es schon -zig Beiträge ähnlicher Art gibt, iwie bin ich einfach zu unfähig die tw schon vorhandenen Lösungen an mein Batchfile anzupassen, liegt auch daran dass ich die FOR-Anweisung noch nicht zu 100% versteh, egal...
Der Titel sagt ja schon das Wesentliche, nun zu den Details:
Ich habe eine Textdatei(Bsp.txt) mit mehreren Zeilen die wie folgt formatiert ist
(reines Bsp, in Wirklichkeit handelt es sich um 100.000 Zeilen mit total unterschiedlichen Zahlen):
1
2
3
4
5
6
7
8
9
Bestimmte Zahlen/Zeilen möchte ich nun nacheinander auslesen um mit ihnen weiter zu arbeiten(im Prog unten ist diese "Verarbeitung" jetzt nur ein "echo" - rein der Einfachheit halber und um die Funktion zu testen. Tatsächlich folgen div. größer/kleiner Abfragen und dann entsprechende weitere Abläufe)
Mein BatchProg schaut derzeit wie folgt aus (an Bsp.txt angepasst):
@echo off
set /a counter=0
:loop
set /a counter=%counter%+1
for /f "tokens=%counter%" %%i in (Bsp.txt) do set /a zahl=%%i
echo %zahl%
if %counter%==9 goto :ende
goto :loop
:ende
pause
exit
Falls Unklarheiten, hier noch ne Bemerkung zum besseren Verständnis meines Anliegens:
WÜRDE meine Bsp.txt so formatiert sein (alle Werte in nur einer Zeile), ...
1 2 3 4 5 6 7 8 9
... so würde mein Batchprog wie gewünscht funktionieren(Ergebnis schaut hier so aus: nacheinander werden die Zahlen 1-9 ausgespuckt, danach pause und exit), und ich könnte mit Hilfe des %Counter%s auf das gewünschte Zeichen (z.B. 3. Zahl) zugreifen und damit bei Bedarf weiterarbeiten. (z.B. IF %counter%==3 SET irgendwas_1=%zahl%... IF irgendwas_1... etc)
Aber leider ist diese Formatierung bei meiner .txt nicht der Fall.
Das diese "tokens"-Zeichenabfrage jetzt irgendwie an den Zeilenumbrüchen scheitert ist mir schon klar, nur die Frage ist: Wie mach ich das auch meinem Batchfile klar?
Danke im Vorraus für euren PRODUKTIVEN Antworten
(especially dedicated for wannabe-DrHouse)
MfG, 5chweinsbraten
[Edit Biber] Code mit Code-Tags formatiert. [/Edit]^^
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 111736
Url: https://administrator.de/forum/mit-batch-mehrzeilige-spalte-zeilenweise-auslesen-und-inhalt-weiterverwenden-111736.html
Ausgedruckt am: 24.05.2025 um 16:05 Uhr
8 Kommentare
Neuester Kommentar

Hallo Servus und auch dir ein herzhaftes Willkommen.
Mir fallen drei Dinge auf:
Gruß
[_] Benachrichtigung bei Antwort keine Arme -keine Kekse
Mir fallen drei Dinge auf:
- die Variable "mit der Tür ins Haus" hast du erfüllt - das ist schonmal eher ungern gelesen.
- Dein Beitrag und deine Batch sind irgendwie "wirr" - was genau ist denn das Begehr?
- Bitte dringendst um Hilfe !!
for /?
Gruß
[_] Benachrichtigung bei Antwort keine Arme -keine Kekse

Servus,
denk daran, wir sind alle auch nur Menschen und umsonst ist nicht mal der Tot, der kostet das leben.
Von daher ist es nicht wirklich ultimativ, sondern ein / das einzige was ich und einige andere bestimmt auch von demjenigen verlangen, dem wir für "umme" helfen.
Und damit du einen Einblick bekommst, wie eine Schleife funktioniert, habe ich dein Script so angepasst, das es "logischer" wird.
gruß
ultimativer Höflichkeitsform
denk daran, wir sind alle auch nur Menschen und umsonst ist nicht mal der Tot, der kostet das leben.
Von daher ist es nicht wirklich ultimativ, sondern ein / das einzige was ich und einige andere bestimmt auch von demjenigen verlangen, dem wir für "umme" helfen.
Und damit du einen Einblick bekommst, wie eine Schleife funktioniert, habe ich dein Script so angepasst, das es "logischer" wird.
@echo off
set /a counter=0
:loop
set /a counter=%counter%+1
for /f %%i in (Bsp.txt) do (
echo jetzt bin ich zum %counter% mal in der Datei und lese den Inhalt %%i && set /a zahl=%%i)
if %counter%==9 goto :ende
goto :loop
:ende
pause
exit
gruß
(especially dedicated for wannabe-DrHouse)
ps:(i dont wanna be ur drill instructor - but i try my very best)
Hallo 5chweinsbraten!
Wenn auch "wirr" nicht zutreffen mag, so fehlt mir doch in Deiner Beschreibung etwas an Zusatzinformation - insbes wieviele Zeilen Du auslesen willst und woher die Zeilennummern dafür stammen ...
Im einfachsten Fall (gesuchte Zeilen "hartcodiert") ginge es etwa so:
Wenn es nur um wenige Zeilen geht, etwa so:
oder so:
Grüße
bastla
Wenn auch "wirr" nicht zutreffen mag, so fehlt mir doch in Deiner Beschreibung etwas an Zusatzinformation - insbes wieviele Zeilen Du auslesen willst und woher die Zeilennummern dafür stammen ...
Im einfachsten Fall (gesuchte Zeilen "hartcodiert") ginge es etwa so:
@echo off & setlocal enabledelayedexpansion
set "Datei=D:\Deine Textdatei.txt"
set /a Z=1
for /f "usebackq delims=" %%a in ("%Datei%") do (
if !Z!==1 call :Verarbeitung 1 "%%a"
if !Z!==3 call :Verarbeitung 3 "%%a"
if !Z!==4 call :Verarbeitung 4 "%%a"
if !Z!==7 call :Verarbeitung 7 "%%a"
set /a Z+=1
)
goto :eof
:Verarbeitung
echo Zeile %1:%~2
goto :eof
@echo off & setlocal
set "Zeilen=4 7 3 1"
set "Datei=D:\Deine Textdatei.txt"
for %%i in (%Zeilen%) do call :ProcessLine %%i
goto :eof
:ProcessLine
set /a Z=%1-1
if %Z%==0 set /p Zeile=<"%Datei%"& goto :Verarbeitung
set Zeile=
for /f "usebackq skip=%Z% delims=" %%a in ("%Datei%") do if not defined Zeile set "Zeile=%%a"
:Verarbeitung
echo Zeile %1: %Zeile%
goto :eof
@echo off & setlocal
set "Zeilen=4: 7: 3: 1:"
set "Datei=D:\Deine Textdatei.txt"
for /f "tokens=1* delims=:" %%i in ('findstr /n "^" "%Datei%"^|findstr /b "%Zeilen%"') do echo Zeile %%i: %%j
bastla

Servus 5chweinsbraten,
auch wenn es "blöd" ist:
zuerst einmal das Lob.
Aber....
/Snip
\snap
Bitte dringendst um Hilfe !!
Das du meine Hilfe nicht akzepzierst - weil Sie eine Hilfestellung eine andere als die gesuchte ist - eh klar.
Aber daß Kollege Bastla seit 19.03.2009 um 01:37:20 Uhr auf ein Feedback wartet - oder auch nicht - ist dann irgendwie traurig.
Have a nice weekend und nimm das mal alles in ruhiger Umgebung so an, wie es gemeint ist.
Gruß
auch wenn es "blöd" ist:
zuerst einmal das Lob.
- schön - dass du deinen Beitrag etwas geändert hast.
Aber....
- schade, das dein Beitrag - ast genau dem entspricht, den ich "erwartet" habe:
/Snip
\snap
Bitte dringendst um Hilfe !!
Das du meine Hilfe nicht akzepzierst - weil Sie eine Hilfestellung eine andere als die gesuchte ist - eh klar.
Aber daß Kollege Bastla seit 19.03.2009 um 01:37:20 Uhr auf ein Feedback wartet - oder auch nicht - ist dann irgendwie traurig.
Have a nice weekend und nimm das mal alles in ruhiger Umgebung so an, wie es gemeint ist.
Gruß
@timobeil
- ist bei 5chweinsbraten wohl eine der Situationen, die zeigen, wie schnell sich Prioritäten verschieben können (oder es war nach doch beinahe 14 Stunden bereits viel zu spät). 
Grüße
bastla
Aber daß Kollege Bastla seit 19.03.2009 um 01:37:20 Uhr auf ein Feedback wartet - oder auch nicht
"Warten" wäre übertrieben Grüße
bastla
<OT II>
Erfahrungsgemäß wartet Kollege bastla jetzt in der Fastenzeit nur auf eines.... das Ende derselben.
Bzw. wir alle warten jetzt auf Schweinsbraten... *gg
Und niemand sollte sollte jetzt das Wort "Feed" wie in "Feedback" erwähnen....
... oder Festplatten...
unangenehme Assoziationen..
</OT II>
Schönes Wochenende und nehmts leicht
Biber
Aber daß Kollege Bastla seit 19.03.2009 um 01:37:20 Uhr auf ein Feedback wartet ...
Erfahrungsgemäß wartet Kollege bastla jetzt in der Fastenzeit nur auf eines.... das Ende derselben.
Bzw. wir alle warten jetzt auf Schweinsbraten... *gg
Und niemand sollte sollte jetzt das Wort "Feed" wie in "Feedback" erwähnen....
... oder Festplatten...
unangenehme Assoziationen..
</OT II>
Schönes Wochenende und nehmts leicht
Biber
@Biber
No problem - wozu habe ich das Sternzeichen Phlegmadicker ...
Auch Dir ein schönes Wochenende
bastla
No problem - wozu habe ich das Sternzeichen Phlegmadicker ...
Auch Dir ein schönes Wochenende
bastla