danielg80
Goto Top

Batch zum Auslesen einer .txt Datei in Variablen

Hallo,
habe das Forum durchforstet und leider nichts passendes gefunden!
Ich habe eine Txt datei vorliegen mit folgendem Inhalt:

Users of XXXX: (Total of 8 licenses issued; Total of 0 licenses in use)
Users of XXXX: (Total of 8 licenses issued; Total of 0 licenses in use)
Users of XXXX: (Total of 10 licenses issued; Total of 0 licenses in use)
Users of XXXX: (Total of 8 licenses issued; Total of 0 licenses in use)
.
.
Users of XXXX: (Total of 16 licenses issued; Total of 0 licenses in use)

(Insgesamt 20 Zeilen)

Nun möchte ich eine Batch erezugen die mir diese Datei einliest und jedes einzelne XXXX (Programm), die dazugehörige erste Zahl und die dazugehörige 2 Zahl als eine eigenständige Variable speichert! Und dies mit alle 20 Zeilen! Im besten Fall hätte ich also 60 Variablen

Brauche das, denn ich möchte diese dann in einer Art Log Datei als tabelle ausgeben (per Batch)

Hoffe auf euere Hilfe, denn ich bin noch recht neu bei euch!
face-wink

Content-ID: 379383

Url: https://administrator.de/forum/batch-zum-auslesen-einer-txt-datei-in-variablen-379383.html

Ausgedruckt am: 17.04.2025 um 19:04 Uhr

136588
136588 06.07.2018 aktualisiert um 13:44:20 Uhr
Goto Top
@echo off
for /f "usebackq tokens=3,7,11 delims= :" %%a in ("c:\Datei.txt") do echo %%a,%%b,%%c  
oder auch
@echo off
set "file=C:\datei.txt"  
powershell -Executionpolicy ByPass -NoProfile -Command "gc '%file%' | ?{$_ -match  'of ([^:]+).*?of (\d+).*of (\d+)'} | %%{[pscustomobject]@{Program=$matches[1];Issued=$matches[2];InUse=$matches[2]}} | ft"  
Im besten Fall hätte ich also 60 Variablen
LOL face-big-smile
DanielG80
DanielG80 11.07.2018 aktualisiert um 14:10:12 Uhr
Goto Top
wie oben beschrieben ausgangsdatei sieht so aus:
Users of XXX1: (Total of 8 licenses issued; Total of 4 licenses in use)
 Users of XXX2: (Total of 8 licenses issued; Total of 1 licenses in use)
 Users of XXX3: (Total of 10 licenses issued; Total of 0 licenses in use)
 Users of XXX4: (Total of 8 licenses issued; Total of 0 licenses in use)
 .
 .
 Users of XX20: (Total of 16 licenses issued; Total of 0 licenses in use)
mit
for /f "usebackq tokens=3,6,11 delims=: " %%a in (test.txt) do ECHO %%a ; %%b ; %%c >>neu.txt  
habe ich dann in der neu.txt
Lizenzname ; Issued ; in Use 
Users of XXX1 ; 8 ; 4 
Users of XXX2 ; 1 ; 1 
.
.
Users of XX20 ; 1 ; 0

meine letzte datei soll aber einen anderen aufbau haben und deswegen bräuchte ich jeden "Wert" in einer variablen (lizenz1= Users of XXX1, lizenz2= Users of XXX2 ,. .....lizenz20= Users of XX20 max1=8, max2=1..... max20=1 ist1=4, ist2=1......ist20=0

mit
for /f "usebackq tokens=1,2,3 delims=; " %%a in (test.txt) do (  
set lizenz1=%%a
set max1=%%b
set ist1=%%c
echo !lizenz1!
echo !max1!
echo !ist1!
)
speichert er mir ja die erste Zeile richtig in die Variablen, mein Problem ist aber das beim zweiten Durchlauf (2.zeile usw) der Schleife ja lizenz1 ersetzt wird!

kann man das nicht irgendwie hinbekommen das er das die erste zeile der test.txt in (Lizenz1,Max1 und ist1) speichert
die zweite zeile der test.txt in (Lizenz2,Max2 und ist2) speichert
3.zeile in (Lizenz3,Max3 und ist3)
usw

und ich dann am ende sagen kann jetzt
echo %lizenz1% ; %Lizenz2%
echo (%max1%)%ist ; (%max2%)%ist2%

soll also so aussehen

Users of XXX1 ; Users of XXX2
(8)4 (1)1

hoffe ihr versteht mich