hovawart
Goto Top

Variable in for-Anweisung definieren

Sorry, nach drei Stunden erfolgloser Suche und Experimentierens frage ich jetzt doch einmal (und riskiere den "Anschiss" wg. Dummheit!) !

Ich möchte die zweite Zeile, die mit dem Kommando
wmic path SoftwareLicensingService get OA3xOriginalProductKey
ausgegeben wird, einer Variablen übergeben, zur weiteren Verarbeitung.
Prinzipiell klappt das auch, aber nur innerhalb der for-Anweisung.
Während in der for-Anweisung die Ausgabe mit echo %%a funktioniert, findet die Übergabe an die Variable var mit set var=%%a zwar statt, weil echo !var! auch den gewünschten Inhalt liefert, sie ist aber nach Verlassen der for-Anweisung nicht mehr verfügbar. Auch ein echo %var% an dieser Stelle (statt !var!) liefert nichts.
Ein set-Kommando liefert mir in der alphabetischen Variablenliste an der richtigen Stelle (zw. U und W) ein ar= . Das "v" fehlt und die Variable ist ohne (sichtbaren) Inhalt.

Was mache ich falsch?

@echo off & setlocal ENABLEDELAYEDEXPANSION
echo ProductKey aus BIOS auslesen
for /f "tokens=1 skip=1" %%a in ('wmic path SoftwareLicensingService get OA3xOriginalProductKey') do  echo %%a & set var=%%a & echo !var!  

:: Nachfolgendes Kommando liefert lediglich eine Echo-Warnung, aber nicht den Inhalt der Variablen
:: Die Übergabe in eine Datei findet ebenfalls nicht statt. 
echo %var% 
echo %var% >> productkey.txt

Content-ID: 655650

Url: https://administrator.de/forum/variable-in-for-anweisung-definieren-655650.html

Ausgedruckt am: 24.12.2024 um 20:12 Uhr

rubberman
rubberman 24.02.2021 aktualisiert um 22:11:47 Uhr
Goto Top
WMIC hat einige Bugs. Bspw. zusätzliche CR Zeichen am Ende der Zeile.
Ungetestet:
for /f "delims=" %%a in ('wmic path SoftwareLicensingService get OA3xOriginalProductKey /value') do for /f "tokens=1* delims==" %%b in ("%%a") do set "var=%%c"  

Steffen
Hovawart
Hovawart 25.02.2021 um 13:47:42 Uhr
Goto Top
Ganz herzlichen Dank!
Diese Variante hat sofort funktioniert!

Durch die etwas andere Ausgabe des WMIC-Kommandos, ausgelöst durch den Parameter /value, kann in der von rubberman dargestellten Form eine andere Auswertung erfolgen, die zu einem plausiblen Ergebnis führt.

Danke nochmal!
rubberman
rubberman 25.02.2021 um 18:28:49 Uhr
Goto Top
Gerne. Die 2. FOR /F Schleife ist übrigens erforderlich um den angesprochenen Bug auszubügeln. Ohne diese würdest du ein zusätzliches CR Zeichen am Wert haben, was du ggf. erst in einem HEX Editor sicher erkennst.

Steffen