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-Key: 655650

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

Printed on: April 23, 2024 at 11:04 o'clock

Member: rubberman
rubberman Feb 24, 2021 updated at 21:11:47 (UTC)
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
Member: Hovawart
Hovawart Feb 25, 2021 at 12:47:42 (UTC)
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!
Member: rubberman
rubberman Feb 25, 2021 at 17:28:49 (UTC)
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