kriegstreiber
Goto Top

Zweite Zeile in einer TXT will sich nicht auslesen lassen

Hallo Community,

ich verzweifel gerade, weil ich partout nicht auf die Lösung eines simplen Auslesens einer TXT komme. Dazu sei gesagt, ich habe in meinem Script mehrere solche Sachen drin, nur hier funktioniert es nicht. Ich erstelle mit certutil die MD5 Hashsumme einer Datei:

certutil -hashfile MeineDatei.dat md5 >"%~dp1hashsum.txt"  

Der inhalt der TXT ist nun so:

MD5-Hash von B:\MeineDatei.dat:
506f6f6c78c11684c286fced1ed47524
CertUtil: -hashfile-Befehl wurde erfolgreich ausgeführt.

Die Vorfreude war gross, ich kann die zweite Zeile wie sie ist als Variable nehmen. Also flux diesen Befehl reingehämmert:

for /f "usebackq skip=1 delims=" %%A in ("%~dp1hashsum.txt") do set MD5Sum=%%A  
echo MD5Sum="%MD5Sum%"  

und Möp MD5Sum =
CertUtil: -hashfile-Befehl wurde erfolgreich ausgeführt.

Ich habe nun alle Möglichen Parameter durch, mit skip Token und Delims, es kommt nie eine andere Ausgabe.

Ich habe im Script öfter solche sachen die einwandfrei funktionieren, z.B. sowas hier:

find "Hallo Torsten" "%TEMP%\Gruss.txt">"%TEMP%\Gruss_ZeileX.txt"  
for /f "skip=2 tokens=1 delims=| usebackq" %%P in ("%TEMP%\Gruss_ZeileX.txt") do set TEST=%%P  

Der untere Befehl ist quasi dasselbe wie ich hier oben vorhabe, dort brauche ich auch Zeile 2 (es ist dort nur die letzte Zeile).

Was mache ich falsch?

Content-Key: 3647175061

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

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

Member: rubberman
Solution rubberman Aug 14, 2022 at 11:13:46 (UTC)
Goto Top
set "MD5Sum="  
for /f "skip=1" %%A in ('certutil -hashfile "MeineDatei.dat" md5') do if not defined MD5Sum set "MD5Sum=%%A"  
echo %MD5Sum%
Wenn du nicht prüfst ob du der Variablen schon einen Wert zugewiesen hast, landet die letzte Zeile in der Variablen da der vorherige Wert in der Schleife überschrieben wird.

Steffen
Member: Kriegstreiber
Kriegstreiber Aug 14, 2022 updated at 11:28:09 (UTC)
Goto Top
Oh man ey ich Depp. Klar, bei den anderen Sachen wo es funktionierte hatte ich vorher alle Variablen als leer definiert gehabt. Das lustige, ich hätte nach allen Ursachen gesucht, aber darauf wäre ich nie gekommen.^^ Vielen Dank und schönen Sonntag.

P.S. Und besonderen Dank für die Sache mit Certutil in der Schleife ausführen lassen, das wusste ich bis dato gar nicht das es auch so geht.
Member: rubberman
rubberman Aug 14, 2022 at 11:35:20 (UTC)
Goto Top
[...] das wusste ich bis dato gar nicht das es auch so geht.
Die FOR /F Schleife liest hier das StdOut der Ausgabe (über eine intern erzeugte Pipe). Heißt, bei allem wo du per > und >> das StdOut in eine Datei umleiten kannst, ist es grundsätzlich auch möglich die Verarbeitung ohne temporäre Datei vorzunehmen.

Steffen