2016-07-19 19 views
2

プロダクション環境でコンピュータを適切にアクティブにできるように、WindowsプロダクトキーをBIOSから取得するバッチスクリプトを作成しようとしています。BIOSからwindowsプロダクトキーを取得する

コマンド私は、キーを取得するために実行していますが、この含まれていTEXT.TXTというテキストファイルを作成しますwmic path SoftwareLicensingService get OA3xOriginalProductKey > text.txt

です:

OA3xOriginalProductKey   
xxxxx-xxxxx-xxxxx-xxxxx-xxxxx 

(各行の後にそこにいくつかのランダムなスペースに注意してください) 問題は私がただxxxxx-xxxxx-xxxxx-xxxxx-xxxxx部分を必要とすることです、しかし私はそれをするのにひどい時を過しています。

私は次のことを試してみました:

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=%* 

と最後ではなく、少なくとも

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

私はひどい時と午前を持っています言ったように/ fのための非常に冗談 - 私はどこにいるのか分かりません間違ったことや何をするか。

+0

関連:[WMICコマンド出力の最終行をスキップ](http://stackoverflow.com/a/37708060) – aschipfl

答えて

3

forを使用すると、コマンドの出力を取得できます。 (ここではVLRenewalInterval)別のwmicトークンを使用して

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

醜いWMIC行末(希望トークンが終わる何のラインを持っていない)を取り除くために、いくつかの方法の一つです。

+0

素晴らしい、ありがとう。 – GrumpyCrouton

関連する問題