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?
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
3 Antworten
- LÖSUNG rubberman schreibt am 24.02.2021 um 20:11:04 Uhr
- LÖSUNG Hovawart schreibt am 25.02.2021 um 13:47:42 Uhr
- LÖSUNG rubberman schreibt am 25.02.2021 um 18:28:49 Uhr
- LÖSUNG Hovawart schreibt am 25.02.2021 um 13:47:42 Uhr
LÖSUNG 24.02.2021, aktualisiert um 22:11 Uhr
WMIC hat einige Bugs. Bspw. zusätzliche CR Zeichen am Ende der Zeile.
Ungetestet:
Steffen
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
LÖSUNG 25.02.2021 um 13:47 Uhr
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!
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!
LÖSUNG 25.02.2021 um 18:28 Uhr
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
Steffen