2016-07-19 14 views
2

Ich versuche, ein Batch-Skript zu machen, um den Windows Product Key aus dem BIOS zu ziehen, damit der Computer in einer Produktionsumgebung ordnungsgemäß aktiviert werden kann.Windows-Produktschlüssel aus Bios erhalten

Der Befehl Ich betreibe den Schlüssel zu bekommen ist wmic path SoftwareLicensingService get OA3xOriginalProductKey > text.txt

, die eine Textdatei text.txt, die enthält das genannte erstellt:

OA3xOriginalProductKey   
xxxxx-xxxxx-xxxxx-xxxxx-xxxxx 

(Anmerkung einige zufällige Räume dort nach jeder Zeile) Das Problem ist, ich brauche nur die xxxxx-xxxxx-xxxxx-xxxxx-xxxxx Teil, aber ich habe eine schreckliche Zeit damit.

Ich habe versucht, die folgenden:

for /F "skip=10 delims=" %%i in (text.txt) do echo %%i

for /f "tokens=1*delims=:" %%G in ('findstr /n "^" text.txt') do if %%G equ 2 echo %%H

for /f "tokens=*" %%a in (text.txt) do call :processline %%a 

:processline 
echo line=%* 

und nicht zuletzt

for /F "tokens=2" %%i in (text.txt) do echo %%i %%j %%k 

Wie gesagt ich eine schreckliche Zeit habe und bin sehr viel ein Noob mit for/f - Ich habe keine Ahnung, wo ich bin falsch laufen oder was zu tun ist.

+0

Zugehörig: [Überspringt letzte leere Zeile der WMIC-Befehlsausgabe im Batch] (http://Stackoverflow.com/a/37708060) – aschipfl

Antwort

3

können Sie for verwenden, um die Ausgabe eines Befehls abzurufen.

@echo off 
For /f "tokens=2 delims=," %%a in ('wmic path SoftwareLicensingService get OA3xOriginalProductKey^,VLRenewalInterval /value /format:csv') do set key=%%a 
echo %key% 

Verwendung eines anderen wmic Token (hier VLRenewalInterval) ist eine von mehreren Methoden der hässlichen wmic Zeilenenden loszuwerden (die gewünschte Token hat Endung keine Linie).

+0

erstaunlich, danke. – GrumpyCrouton