# BATCH: Textzeile auslesen?



## kinglazee (4. November 2004)

Hallo,

ich hoffe hier im Forum auf Hilfe, bin gerade dabei mir so eine Art kleines Backup zu schreiben.

Ich halbe eine Textdatei die sieht in etwa so aus:

Verzeichnisse.txt:
c:\dokumente und einstellungen\user1\...
c:\dokumente und einstellungen\user2\...
c:\dokumente und einstellungen\user3\...
/end

ich würde gerne diese Zeilen auslesen mit einer Batch und in eine Variabel packen damit ich damit weiterarbeiten kann, leider bekomme ich mit for /F immer nur den 1. token, also "c:\dokumente". Also die meine Zeile wird mit FOR /F nach dem 1. Leerzeichen getrennt.

Hat jemand eine Idee wie ich das hinbekommen kann damit er die komplette Zeile in eine Variabel packt?

Wäre euch sehr dankbar, suche schon lange nach einer Lösung!

MFG kinglazee


----------



## Thomas Darimont (4. November 2004)

Hallo!

Versuchs mal mit:
tokens=* liest die ganze Zeile aus der Textdatei aus.

```
FOR /F "tokens=*" %i IN (c:\test.txt) DO ECHO %i
```

test.txt:


> c:\ordner 1\abc
> c:\ordner 2\def
> c:\ordner 3\ghi



Ausgabe:


> C:\>ECHO c:\ordner 1\abc
> c:\ordner 1\abc
> 
> C:\>ECHO c:\ordner 2\def
> ...



Gruß Tom


----------



## kinglazee (6. November 2004)

hallo, 
danke für die Antwort, aber leider habe ich es mit dieser Zeile schon versucht!

test.bat:
FOR /F "tokens=*" %%i IN (text.txt) do call :ablauf %%i
goto :eof


:ablauf
set x=%1
echo Test: %x%
:eof

text.txt:
zeile 1
zeile 2
zeile 3
zeile 4
zeile 5
:eof

damit bekomm ich folgendes ergebnis:

C:\TEMP>FOR /F "tokens=*" %i IN (text.txt) do call :ablauf %i 

C:\TEMP>call :ablauf zeile 1 

C:\TEMP>set x=zeile 

C:\TEMP>echo Test: zeile 
Test: zeile

C:\TEMP>call :ablauf zeile 2 

C:\TEMP>set x=zeile 

C:\TEMP>echo Test: zeile 
Test: zeile

C:\TEMP>call :ablauf zeile 3 

C:\TEMP>set x=zeile 

C:\TEMP>echo Test: zeile 
Test: zeile

C:\TEMP>call :ablauf zeile 4 

C:\TEMP>set x=zeile 

C:\TEMP>echo Test: zeile 
Test: zeile

C:\TEMP>call :ablauf zeile 5 

C:\TEMP>set x=zeile 

C:\TEMP>echo Test: zeile 
Test: zeile

C:\TEMP>goto :eof 
:eof

wie kann ich das jetzt abändern damit ich ne variable habe in der steht "Zeile 1"? damit ich halt damit weiterarbeiten kann.

Bin für alle Tips und Antworten froh!
MFG kinglazee


----------



## f.k. deleted (7. Dezember 2004)

Moin lieber spät als nie 


```
for /f "tokens=1 delims=;" %%i in (images.dat) do if /I %%i EQU %board% @ECHO %%i
```

Damit leist er den ersten Token aus und gibt ihn aus 
Du must ihm sagen wo sein erster Token zu ende ist. Standard ist eine "leerzeile" " " das Ende.
Aber mit "delims=; setzt er den Standard außer kraft und du kannst eigene Endpunkte festlegen.

Hoffe das hilft dir weiter.

Jetzt habe ich aber nochmal ne frage ;-)

Ich brauche das gleiche kann aber die Befehle "Tokens" und "Delims" nicht benutzen. wie kann ich das dan abstellen?

Gruss Florian


----------

