zensbert
Goto Top

Per Batch Daten aus TXT lesen und in Variable übergeben

Hallo,
ist zwar keine Schwierigkeit an sich, aber ich habe das Problem dass ich Daten aus einer TXT auslesen will und in verschiedene Variablen aufsplitten will..
In der besagten TXT ist nur die Zeile, alles andere wurde vorher aussortiert.. Problem sind die Leerzeilen..

Beispiel der TXT:
ID1001 <TAB> Kundenname <TAB> Beschreibung <TAB> RDP <TAB> URL <TAB> Port <TAB> User <TAB> Passwort

Hier sieht man dass bei Kundenname auch mal Leerzeilen mit drin sind z.B. "Mustermann GmbH"..
Ich brauche halt folgende Daten jeweils einzeln in Variablen: RDP, URL, PORT, USER, PW

Habe schon mit Delims und Tokens gespielt, aber iwie klappt das nich^^

Thx for Support,
Thomas

Content-Key: 150375

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

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

Member: pieh-ejdsch
pieh-ejdsch Sep 05, 2010 at 18:49:56 (UTC)
Goto Top
moin zensbert,

anstatt Leerzeilen meintest Du sicherlich Leerzeichen...
standartmässig ist delims der For-Schleife TAB und Leerzeichen

sind Die <TAB> Tabulatoranschläge? - dann in der for Schleife einen Tabanschlag nach dem delims= machen
bei einer Beispieldatei
ID1001 <TAB> Kundenname <TAB> Beschreibung <TAB> RDP <TAB> URL <TAB> Port <TAB> User <TAB> Passwort
ID1001 	 Kundenname OHG Beispiel 	 Beschreibung 	 RDP 	 URL 	 Port 	 User 	 Passwort
ID1001  Kundenname  Beschreibung  RDP  URL  Port  User  Passwort

reicht diese BatchZeile
for /f "usebackq tokens=4-8 delims=	" %%i in ("neues textdokument.txt") do echo 1.%%i 2.%%j 3.%%k 4.%%l 5.%%m  

Gruß Phil
Member: bankaifan
bankaifan Sep 06, 2010 at 07:43:14 (UTC)
Goto Top
Kleine Anmerkung noch, wenn ich mich nicht verzählt habe muss es ..."...tokens=3-7... heißen. Er will ja dass RDP auch noch dabei ist und an erster stelle steht ja auch ein <TAB>
Mitglied: 77559
77559 Sep 06, 2010 at 09:16:57 (UTC)
Goto Top
Moin zusammen,

nö bankaifan "ID1001" steht an erster Stelle und ein führender delims würde nicht mitzählen.

Um die Variablen direkt zuzuweisen kann er dies benutzen;
for /f "usebackq tokens=4-8 delims=	" %%A in ("neues textdokument.txt"  
) do for %%V in ("RDP=%%A" "URL=%%B" "Port=%%C" "User=%%D" "Passwort=%%E"  
) Do Set %%V
(logisch eine Zeile,nur der Übersicht halber umbrochen)

Gruß
LotPings
Member: bankaifan
bankaifan Sep 06, 2010 at 09:26:14 (UTC)
Goto Top
Sry :D Hab das ID1001 übersehen :D dann passt des natürlich.
Member: pieh-ejdsch
pieh-ejdsch Sep 06, 2010 at 16:18:19 (UTC)
Goto Top
moin LotPings,

for %%V in ("RDP=%%A" "URL=%%B" "Port=%%C" "User=%%D" "Passwort=%%E"
) do set %%V
Bei mir war mal der Effekt das Die Variablennamen ein führendes AnführungsZeichen " enthalten und die Variablen am Ende derZeichenfolge ein AnführungsZeichen " enthalten.

warum des so war weis ich nicht somit konnte ich nicht Variablen RDP,... nicht abrufen nur "RDP

besser ist
for %%V in ("RDP=%%A" "URL=%%B" "Port=%%C" "User=%%D" "Passwort=%%E"
) do set "%%~V"

Gruß Phil
Member: zensbert
zensbert Sep 08, 2010 at 19:02:38 (UTC)
Goto Top
Hallo, entschuldigung wegen der kurzen ruhephase..
danke an alle Helfer.. funktioniert super damit.. ich habe nur eine kurze frage zum ergänzen; und zwar stehen in der TXT diese Zeilen, wenn ich nun aber nach dem kunden suche zeigt er alle infos aus der Zeile bzw. Zeilen an wenn der kunde mehrere einträge hat..

derzeit suche ich so:
type database.txt |find /I "%client%"

schön wäre es aber wenn nur die ID, Kundenname und Beschreibung angezeigt werden, das Problem hierbei sind für mich die Einträge von Kunden die mehr als einen Eintrag haben und das iwie untereinander aufgelistet werden soll..

z.B.

Bitte Kundennamen eingeben:
Mustermann

Folgende Einträge gefunden:
ID1001 Mustermann, Max PC1
ID1002 Mustermann, Max PC2

jemand ne idee wie ich diese suche so umstelle dass er nur die 3 Positionen anzeigt (statt die komplette Zeile) und die Treffer untereinander auflistet?


Many Thx so far..

Thomas
Mitglied: 77559
77559 Sep 08, 2010 at 19:16:46 (UTC)
Goto Top
Moin Thomas,

komisch jetzt ist da auf einmal ein Komma zwischen Kundenname und Beschreibung?

@Echo off
Set /P Client="Bitte Kundenname angeben: "  
for /f "tokens=1-3 delims=	" %%A in (  
  ' Find /i "%Client%" ^<database.txt '  
    ) do Echo %%A %%B %%C

Aber das Prinzip mit den delims und tokens könntest du doch inzwischen verstanden haben !

Gruß
LotPings
Member: zensbert
zensbert Sep 08, 2010 at 19:40:00 (UTC)
Goto Top
Hi,
Nä..kein Komma, nur ein schlechtes Beispiel
"Mustermann, Max" ist der Kunde und "PC1" die Beschreibung..

Sagen wir es mal so ich weiss was ein tokens ist, delims bin ich noch nicht schlau draus geworden, muss ich nochmal googlen..
es sind halt immer zwei paar schuhe quelltext zu verstehen, oder es eben so selbst machen zu können

Wie kriege ich jetzt die Zeile weg mit "database.txt" in der ausgabe?

Daaanke! Thomas
Mitglied: 77559
77559 Sep 08, 2010 at 21:35:07 (UTC)
Goto Top
Hallo Thomas,

habs oben geändert, die Datei kommt jetzt über Input-Redirection dann kennt Find den Dateinamen nicht.

Gruß
LotPings
Member: zensbert
zensbert Sep 09, 2010 at 17:26:52 (UTC)
Goto Top
Tja, wer kann der kann!

Funktioniert super, vielen Dank!

Greetz
Thomas