62992
Goto Top

Mit Batch eine TXT datei auslesen

Hallo,
Also ich möchte eine datei auslesen der Daten über meinen Stamm bei www.die-stämme.de sind
das Problem ist: Es sind mehr Zeilen vorhanden als ich brauche
Beispiel:
1
2
3
4
5
6
35860,Das+Imperium,%7CIMP%7C,9,9,4947,4947,1246
35126,Die+Gemeinschaft+des+Ringes,%7EDGDR%7E,2,2,818,818,1918
35489,Deiu+Buebe,DB,5,5,5159,5159,1232
36529,Maggots,666,1,1,369,369,2339
32583,Die+wilden+Kings,DwK,5,5,5094,5094,1237
24872,fd+stamm,fd,1,1,598,598,2071

Ich will jetz aber nur die daten die in der Zeile die mit 35860 anfängt finden und in eiene Varibale speichern.

PS: Die zeile die mit 35860 anfängt also 35860,Das+Imperium,%7CIMP%7C,9,9,4947,4947,1246 ist nicht immer die erste sondern irgendwo im dokoment also ich will:

1.Zeile mit "WORT" beginnt finden
2. Zeile mit "WORT" in eine Variable schreiben

Content-ID: 83380

Url: https://administrator.de/forum/mit-batch-eine-txt-datei-auslesen-83380.html

Ausgedruckt am: 07.04.2025 um 04:04 Uhr

bastla
bastla 18.03.2008 um 10:10:05 Uhr
Goto Top
Hallo MisterJojo und willkommen im Forum!

1
for /f "delims=" %%i in ('findstr /b "35860," "D:\Deine Datei.txt"') do set "Zeile=%%i"  

Grüße
bastla
lowbyte1
lowbyte1 18.03.2008 um 10:24:57 Uhr
Goto Top
helo
1
2
3
4
@echo off
set "VAR= | type test.txt | find "36529""  
echo. %VAR%
pause

Bei mir kommt die meldung(warnung) von kaspersky das das ich eine RootShell öffne die die Dateieingabe/-ausgabe umleitet!

Diese meldung ignorieren!


lowbyte
62992
62992 18.03.2008 um 10:33:58 Uhr
Goto Top
Danke bastla des funktioniert super
Lowbyte deins versteh ich nicht und es funktioniert auch nicht bei mir
aber drotzdem danke euch beiden für die schnelle Antwort hjat mir echt weiter geholfen
62992
62992 18.03.2008 um 11:10:48 Uhr
Goto Top
Äh ich hab das jetzt soweit:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
title Stammesdaten von Plutoniumgrill
echo Stammesdaten von Plutoniumgrill


for /f "delims=" %%i in ('findstr /b "18300," "ally.txt"') do set "Zeile=%%i"  
echo %Zeile%>>zeile.txt


FOR /F "tokens=2 delims=, " %%i in (zeile.txt)Do echo %%i>>stammesname.txt   
set/P name =<stammesname.txt

echo Name
echo %name% 

pause


alerdings wird die Variable name an der Stelle
1
2
echo Name
echo %name% 

Wieso funktionier das nicht kann sich das mal jemand durch lesen
bastla
bastla 18.03.2008 um 11:21:47 Uhr
Goto Top
Hallo MisterJojo!

Vielleicht skizzierst Du einmal, was eigentlich das gewünschte Endergebnis sein soll - die Verwendung von Temporärdateien wäre bis hierher jedenfalls noch nicht nötig:
1
2
3
4
5
6
7
8
9
@echo off & setlocal
title Stammesdaten von Plutoniumgrill
echo Stammesdaten von Plutoniumgrill

for /f "delims=" %%i in ('findstr /b "18300," "ally.txt"') do set "Zeile=%%i"  
FOR /F "tokens=2 delims=, " %%i in ("%Zeile%") Do set "Name=%%i"  

echo Name
echo %Name%

Grüße
bastla
62992
62992 18.03.2008 um 11:51:22 Uhr
Goto Top
1
for /f "delims=" %%i in ('findstr /b "18300," "ally.txt"') do set "Zeile=%%i"  
Liest die Zeile mit allen Daten aus (sind inr folgender Reihenfolge vorhanden $id, $name, $tag, $members, $villages, $points, $all_points, $rank)
1
FOR /F "tokens=2 delims=, " %%i in ("%Zeile%") Do set "Name=%%i"  
Soll dan 2 Spalte also $name ausgeben und die anderen daten kann ich dan selber rausholen
lowbyte1
lowbyte1 20.03.2008 um 00:26:20 Uhr
Goto Top
helo


nur so nebenbei ....

1
2
3
4
@echo off
set "VAR= | type test.txt | find "36529""  
echo. %VAR%
pause

das wurde von mir getestet und funktioniert ganz bestimmt.
syntax stimmt auch.

vileicht blockiert irgend ein programm auf deinem rechner, die ausführung von solchem code.


lowbyte
Biber
Biber 20.03.2008 um 01:55:18 Uhr
Goto Top
Moin lowbyte1,

jein.... Du kommst zwar rein optisch zum gleichen Ergebnis, aber nur auf ganz schmalem Grat...

Die ganze Wahrheit [recherchiert am CMD-Prompt] ist:
1
2
3
4
5
6
7
8
9
10
11
12
13
D:\temp>echo 12377>test2.txt

D:\temp>echo 12345>>test2.txt

D:\temp>set "VAR= | type test2.txt | find "12377""  

D:\temp>echo %var%
12377

D:\temp>set "VAR= | type test2.txt|find "12345""  

D:\temp>echo %var%
12345
soweit genau wie von Dir gepostet, aber nu...
1
2
3
4
5
6
7
8
D:\temp>echo [%var%]
FIND: Parameterformat falsch

D:\temp>echo %var%..
FIND: Parameterformat falsch

D:\temp>set v
VAR= | type test2.txt|find "12345"  

Die letzte Zeile offenbart das Geheimnis. In %var% steht leider nicht das Ergebnis der Type/Find-Operation, sondern eine Befehlsfolge, die jedesmal beim Ansprechen von %var% aufgelöst/ausgeführt wird.
Du hast also quasi einen Alias/einen Mini-Makro definiert.
Und ein "echo %var%" wird so aufgelöst:
1
2
D:\temp>echo | type test2.txt|find "12345"  
12345
Na ja, vordergründig schon das geplante....

Grüße
Biber
lowbyte1
lowbyte1 22.03.2008 um 19:29:55 Uhr
Goto Top
hello biber

ja ich weis es biber dass das nicht gerade die feine art ist..
doch es funktioniert... obwohl man es nicht gerade verwenden sollte.

aber stimmts du mir zu, das es bei ihm trotzdem funktionieren sollte!?


cyu lowbyte