datobsn
Goto Top

Mal eine neue Art von Abfrage mit findstr

Guten Abend Community!

Ich komme mit einem Code einfach nicht weiter und hoffe ihr könnt mir hier helfen...
Also erstmal was ich eigentlich erreichen will:
Ich habe eine Txt-Datei Namens "Profile.txt".
In dieser Datei ist ein Text mit verschiedenen Informationen gegeben.
Darunter ist dann eine Art Tabelle die immer nach dem selben Prinzip aufgebaut ist:
"Name des Profils: %Profilname%"
Das erste "Name des Profils" steht so immer wieder untereinander da und ändert sich nicht, erst dann beim "%Profilname%".
Wie oft diese Zeile dann untereinander steht ist immer unterschiedlich, aber ich hätte da immer gerne alle.
So, was ich davon brauche: den %Profilname% in der ersten Zeile in die Variable %PN1%, den der zweiten Zeile dann in der Variable %PN2%, und so weiter, bis die letzte Zeile erreicht ist.
Ich habe mir gedacht, dass dies doch eigentlich mit dem Befehl findstr in einer Schleife funktionieren müsste, oder?

Ist das, was ich will unmöglich oder bin ich dazu zu inkompetent? Ich blick da mit dem findstr überhaupt nicht durch und ich habe bisher nichts gefunden was mir so hilft.

Naja, mal schauen ob jemand hier dabei durchblickt und mir eventuell helfen kann :D

Ansonsten noch eine schöne Nacht,

Euer DaTobsn

Content-Key: 320557

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

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

Member: H41mSh1C0R
H41mSh1C0R Nov 10, 2016 at 22:30:26 (UTC)
Goto Top
Servus,

schreib ein kleines Stück Code Schnipsel und poste es, dann können wir dir sicher auch weiterhelfen. =)

Gruß
Member: Endoro
Endoro Nov 10, 2016 at 22:32:55 (UTC)
Goto Top
Hey,

ich glaube, dass die Möglichkeit besteht, dass ich weiss, wo es hingehen soll face-wink
Lade doch einfach mal eine Datei "Profile.txt" auf einen Filehoster oder kopiere sie auf pastebin.com und poste den Link hier rein.

Gruss, Endoro
Member: rubberman
rubberman Nov 10, 2016 at 22:44:07 (UTC)
Goto Top
Hallo DaTobsn

ungetestet:
@echo off &setlocal
set /a n=0
for /f "tokens=1,4* delims=: " %%i in ('findstr /n . "Profile.txt"') do (set "PN%%i=%%k" &set /a n=%%i)  

:: Testausgabe
setlocal EnableDelayedExpansion
for /l %%i in (1 1 %n%) do echo !PN%%i!
pause
Warum auch immer man das so kompliziert machen muss. Das Erstellen eines solchen assoziativen Arrays deutet in aller Regel schon auf einen Designfehler des Scripts hin ...

Grüße
rubberman
Member: Endoro
Endoro Nov 10, 2016 at 23:01:57 (UTC)
Goto Top
Hey,

Zitat von @rubberman:

Warum auch immer man das so kompliziert machen muss. Das Erstellen eines solchen assoziativen Arrays deutet in aller Regel schon auf einen Designfehler des Scripts hin ...

Ich bin schockstarr .... !!!!einseinself!!! face-confused face-confused face-confused

Gruss, Endoro
Member: rubberman
rubberman Nov 10, 2016 at 23:20:34 (UTC)
Goto Top
*lach*

Hallo Endoro

Mal sehen, vielleicht gibt's ja noch etwas Background, was den Sinn des ganzen angeht. Wenn man die Werte einmal in der FOR Variablen hat, kann man auch ebenso gut gleich damit arbeiten. Das ist aber momentan Kristallkugelmodus.

Grüße
rubberman
Member: DaTobsn
DaTobsn Nov 17, 2016 at 19:39:04 (UTC)
Goto Top
Ok ok!
Erstamal Servus und jaja gut durchdacht war das hier mal ned....
also hab ich mir mal was mit nem Spetzl überlegt:
Wir können die Ausgabe in eine Datei 10.txt so packen, dass da drin nur noch steht :
---------- TREFFER.TXT
[10]         Profil fr aktuellen Computer : Aktiv
 

so, da uns nur dieses Aktiv interessiert, wollten wir des mit folgendem Code herraustrennen und es in die Variable a speichern:
for /f "skip=2 tokens=2 delmis=:" %%a in (10.txt)  
echo %a
pause


aber irgendwie mag der Computer nicht so funktionieren wie er soll...
vielleicht bzw bestimmt wisst ihr wo der Fehler schlummert...
Ich hoffe, dass es diesmal "verständlicher" ist was ich meine...

Danke für eure Bemühungen im Vorraus,
DaTobsn


P.S: Sorry das ich erst so spät zurück schreibe, aber ich komme nicht so oft dazu mich vor den Computer zu hocken....
Member: Endoro
Solution Endoro Nov 17, 2016 at 20:00:47 (UTC)
Goto Top
Hey,

@echo off &setlocal disabledelayedexpansion
for /f "skip=2 tokens=7" %%a in (10.txt) do (  
	echo %%a
)

Bitte sehr.
Gruß, Endoro
Member: DaTobsn
DaTobsn Nov 17, 2016 at 20:13:30 (UTC)
Goto Top
Danke Danke Danke!!!
Damit hat es perfekt funktioniert!
Danke :D