web-dev-qa-db-ja.com

wmicを使用してバッチファイルでワークグループを取得する

私はバッチファイルにあまり精通していませんが、wmicを使用してワークグループを取得しようとしています。私はforオプションでさまざまなことを試みてきました。これまでのところ、これは私が得た最高の結果です。

for /f "skip=1" %%a in ('wmic computersystem get workgroup') do echo %%a

これは私が望むものを返しますが、echo is offメッセージを与えるため、他の何かもエコーしています。また、ワークグループをこのような変数に設定したいと思います。

for /f "skip=1" %%a in ('wmic computersystem get workgroup') do set "myVar=%%a"

ただし、これは何も返しません。 tokensdelimsを使用する必要があると思いますが、正しく機能させるための知識がありません。

誰かがこれについて私を助けてくれるなら、私は大いに感謝されるでしょう、そしておそらくそれは私がforループを使う方法についてもう少し学ぶのを助けるでしょう。これはおそらく非常に単純なことだと思いますので、無知であることをお許しください。

1
BillH

また、echo is offを与えるため、他の何かをエコーし​​ています。

これは、wmicが(正しく記述されておらず)出力の最後に空白行を出力するためです。

findstr /r /v "^$"を使用して、空白行を削除できます。

バッチファイルの使用:

@echo off
setlocal
for /f "usebackq skip=1 tokens=*" %%i in (`wmic computersystem get workgroup ^| findstr /r /v "^$"`) do set myVar=%%i
echo %myVar%
endendlocal

コマンドラインの使用:

for /f "usebackq skip=1 tokens=*" %i in (`wmic computersystem get workgroup ^| findstr /r /v "^$" ^| findstr /r /v "^$"`) do @set myVar=%i && echo %myVar%

ノート:

  • for /fwmic出力をループします。
  • skip=1はヘッダー行をスキップします(VariableValueを含む)
  • findstr /r /v "^$"は、wmic出力から末尾の空白行を削除します。

出力例:

> wmic computersystem get workgroup
Workgroup
WORKGROUP


> for /f "usebackq skip=1 tokens=*" %i in (`wmic computersystem get workgroup ^| findstr /r /v "^$" ^| findstr /r /v "^$"`) do @set myVar=%i && echo %myVar%
WORKGROUP

>

参考文献

2
DavidPostill