Teil aus txt auslesen
Ich habe schon seit gestern morgen gesucht, finde aber keine Lösung dafür.
Ich habe eine TXT mit dem Inhalt eines Dir Befehls.
Nun möchte ich den Dateinamen aus dieser TXT auslesen.
Es befindet sich nie mehr als eine Datei mit der Serienummer in einem Verzeichnis.
Sonst wird der Ablauf sowiso unterbrochen.
CF11M100 ist statisch
"sn" ist dynamisch aber bekannt
TempCal-TTU ist statisch
und der Rest ist dynamisch und unbekannt. (existiert auch nicht immer)
Nun würde ich gerne den ganzen Dateinamen (CF11M100_"sn"_TempCal-TTU_"YYYYMMDD"_"hhmm".xml) in eine Variable einlesen.
Ich brauche den ganzen Dateinamen in einer Variable, weil ich ihn danach einem CommandLineTool übergeben muss.
Da funktioniert es nicht wenn man es mit '*' schreibt.
Ich habe eine TXT mit dem Inhalt eines Dir Befehls.
Nun möchte ich den Dateinamen aus dieser TXT auslesen.
Datenträger in Laufwerk I: ist Global
Volumeseriennummer: 5EFD-72A8
Verzeichnis von I:\"PFAD"
18.01.2012 14:23 658 CF11M100_"sn"_TempCal-TTU_"YYYYMMDD"_"hhmm".xml
1 Datei(en), 658 Bytes
0 Verzeichnis(se), 248'206'131'200 Bytes frei
Sonst wird der Ablauf sowiso unterbrochen.
CF11M100 ist statisch
"sn" ist dynamisch aber bekannt
TempCal-TTU ist statisch
und der Rest ist dynamisch und unbekannt. (existiert auch nicht immer)
Nun würde ich gerne den ganzen Dateinamen (CF11M100_"sn"_TempCal-TTU_"YYYYMMDD"_"hhmm".xml) in eine Variable einlesen.
Ich brauche den ganzen Dateinamen in einer Variable, weil ich ihn danach einem CommandLineTool übergeben muss.
Da funktioniert es nicht wenn man es mit '*' schreibt.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 188559
Url: https://administrator.de/forum/teil-aus-txt-auslesen-188559.html
Ausgedruckt am: 22.04.2025 um 13:04 Uhr
8 Kommentare
Neuester Kommentar
Halloechen,
habe ich inzwischen schon mehrfach gemacht hier mal mein Code:
mit der FOR-Schleife, liest du die datei aus, mit der zweiten legst du die Zeile(n) fest, welche ausgelesen werden sollen und mit dem Set zum schluss, kannst du ueber die exakte laenge der Variable bestimmen.
Hoffe ich konnte dir helfen
Gruss
Chris
habe ich inzwischen schon mehrfach gemacht hier mal mein Code:
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ DATEI.txt') do @(
for /L %%a in (3,1,3) do @if %%i==%%a @SET VARIABLE=%%j
)
set VARIABLE=%VARIABLE:~26,2%
mit der FOR-Schleife, liest du die datei aus, mit der zweiten legst du die Zeile(n) fest, welche ausgelesen werden sollen und mit dem Set zum schluss, kannst du ueber die exakte laenge der Variable bestimmen.
Hoffe ich konnte dir helfen
Gruss
Chris
Hallo murphy1 und willkommen im Forum!
Wieso erzeugst Du eine Datei, und weshalb verwendest Du nicht gleich
In eine (Lauf-)Variable bekommst Du den Namen mit
oder, wenn es unbedingt eine eigene Variable sein soll:
Grüße
bastla
Wieso erzeugst Du eine Datei, und weshalb verwendest Du nicht gleich
dir /b/a-d "I:\Pfad\CF11M100*.xml"
for /f "delims=" %%i in ('dir /b/a-d "I:\Pfad\CF11M100*.xml"') do echo Starte Tool mit %%i
for /f "delims=" %%i in ('dir /b/a-d "I:\Pfad\CF11M100*.xml"') do set "Var=%%i"
bastla
Halloechen,
Klar ;)
hiermit wird festgelegt, dass es fuer zeile dieser Datei (DATEI.txt) ausgefuehrt wird. und zwar mit einem Findstr mit ausgabe der Zeile, welche irgendwas enthaelt.
hier wird die passende Zeile rausgessucht, und sobald die Zeilen uebereinstimmen, wird die Variable (VARIABLE) gesetzt
Hier wird die Variable (VARIABLE) einfach verkuertzt. Mit %VARIABLE:~26,2% wird erst ab der 26. Stelle angefangen zu lesen, und die 2 bedeutet, von der 26. Stelle aus, 2 Zeichen genommen werden.
Anpassen muesstest du alsofolgene Werte:
VARIABLE
DATEI.txt
:~26,2
soblad du das angepasst hast, sollte es funktionieren.
Gruss
Chris
Klar ;)
for /f "tokens=1,* delims=:" %%i in ('findstr /n $ DATEI.txt') do @(
hiermit wird festgelegt, dass es fuer zeile dieser Datei (DATEI.txt) ausgefuehrt wird. und zwar mit einem Findstr mit ausgabe der Zeile, welche irgendwas enthaelt.
for /L %%a in (3,1,3) do @if %%i==%%a @SET VARIABLE=%%j
)
set VARIABLE=%VARIABLE:~26,2%
Anpassen muesstest du alsofolgene Werte:
VARIABLE
DATEI.txt
:~26,2
soblad du das angepasst hast, sollte es funktionieren.
Gruss
Chris
Hallo murphy1!
Mit dem vond Dir angegebenen Schnipsel prüfst Du ja nur in der Datei "DeviceVerify_File.log" (das
Diese Möglichkeit würde ich ausschließen, wenn Du tatsächlich
verwendet hast ...
BTW: Wenn mit der Möglichkeit zu rechnen ist, dass keine Datei gefunden wird, könnte das etwa so aussehen:
Grüße
bastla
Mit dem vond Dir angegebenen Schnipsel prüfst Du ja nur in der Datei "DeviceVerify_File.log" (das
%CD%\
davor ist übrigens überflüssig), ob genau eine Datei gefunden wurde - mein Vorschlag ging in die Richtung, auf das Ausgeben des Inhaltsverzeichnisses in die Datei zu verzichten und gleich direkt mit dem gefundenen Dateinamen weiter zu arbeiten ...wenn ich den von dir angegebenen Befehl anwende steht in der Variable
DeviceVerify_File.log
for /f "delims=" %%i in ('dir /b/a-d "I:\Pfad\CF11M100*.xml"') do set "Var=%%i"
BTW: Wenn mit der Möglichkeit zu rechnen ist, dass keine Datei gefunden wird, könnte das etwa so aussehen:
set "Var="
for /f "delims=" %%i in ('dir /b/a-d "I:\Pfad\CF11M100*.xml" 2^>nul') do set "Var=%%i"
if defined Var (
echo Datei %Var% gefunden
) else (
echo Keine Datei gefunden
)
bastla
Hallo murphy1!
Grüße
bastla
Durch die Erklährung von Christoph kenne ich die ganze for /f Sache besser
Wenn Du noch mehr wissen willst: Tutorial zur FOR-SchleifeGrüße
bastla