私はバッチファイルにあまり精通していませんが、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"
ただし、これは何も返しません。 tokens
やdelims
を使用する必要があると思いますが、正しく機能させるための知識がありません。
誰かがこれについて私を助けてくれるなら、私は大いに感謝されるでしょう、そしておそらくそれは私がfor
ループを使う方法についてもう少し学ぶのを助けるでしょう。これはおそらく非常に単純なことだと思いますので、無知であることをお許しください。
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 /f
はwmic
出力をループします。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
>