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:
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-Key: 83380

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

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

Member: bastla
bastla Mar 18, 2008 at 09:10:05 (UTC)
Goto Top
Hallo MisterJojo und willkommen im Forum!

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

Grüße
bastla
Member: lowbyte1
lowbyte1 Mar 18, 2008 at 09:24:57 (UTC)
Goto Top
helo
@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
Mitglied: 62992
62992 Mar 18, 2008 at 09:33:58 (UTC)
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
Mitglied: 62992
62992 Mar 18, 2008 at 10:10:48 (UTC)
Goto Top
Äh ich hab das jetzt soweit:


@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
echo Name
echo %name% 

Wieso funktionier das nicht kann sich das mal jemand durch lesen
Member: bastla
bastla Mar 18, 2008 at 10:21:47 (UTC)
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:
@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
Mitglied: 62992
62992 Mar 18, 2008 at 10:51:22 (UTC)
Goto Top
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)
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
Member: lowbyte1
lowbyte1 Mar 19, 2008 at 23:26:20 (UTC)
Goto Top
helo


nur so nebenbei ....

@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
Member: Biber
Biber Mar 20, 2008 at 00:55:18 (UTC)
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:
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...
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:
D:\temp>echo | type test2.txt|find "12345"  
12345
Na ja, vordergründig schon das geplante....

Grüße
Biber
Member: lowbyte1
lowbyte1 Mar 22, 2008 at 18:29:55 (UTC)
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