このコマンドを実行してグループの名前を取得します。
set "remotegroup="
for /f "skip=1delims=" %%a in (
'"wmic group where sid="S-1-5-32-555" get name"'
) do if not defined remotegroup set "remotegroup=%%a"
しかし、私がこれを行うときecho "%rdpgroup%"
出力は次のようになります:
"Remote Desktop Users "
私はユーザーの終わりにそれらのスペースを望んでいません。次のような出力が必要です:"Remote Desktop Users"
WMICの出力はUnicodeです。
末尾の<CR>
は、値を別のFOR/Fループに渡すことで削除できます。これにより、幻の「空白」行も削除されます(実際には<CR>
)
@echo off
set "remotegroup="
for /f "skip=1 delims=" %%a in ('"wmic group where sid="S-1-5-32-555" get name"') do (
for /f "delims=" %%b in ("%%a") do if not defined remotegroup set "remotegroup=%%~nb"
)
echo "%remotegroup%"
pause
同じ結果を得るさまざまな方法ThunderJunによる:
OP1:ここでは、setlocalを使用して、別のfor内でforを使用せずに、遅延型(!var!)の特殊変数の使用をアクティブにします。同じ結果を得るには。
OP2:ここでは、共通の型変数にコマンドを割り当て、垂直バーを使用して、常に最初に優先するいくつかのコマンドを組み合わせます。フィルタを追加します:more +1は、最初の出力行を無視することを示し、次にフィルタを追加します:findstr/i "remot"と別の垂直バー。これは、次のキーワードを含む行のみを出力することを示しています。引用符は大文字と小文字を区別しません。次に、最後の3文字を表示しないように、それを示す型変数commonを使用します:%var:〜0、-3%このように、forを別のfor内で使用しなくても同じ結果が得られます。
OP3:ここでは、setlocalを使用して、遅延型(!var!)の特殊変数の使用をアクティブにします。垂直バーを使用して、for内のコマンドの最後に。そのために、次のコマンドを使用してフィルターを割り当てます。findstr/i "remot"は、キーワードが引用符で囲まれた行のみを出力し、大文字と小文字を区別しないことを示します。遅延タイプの特別な変数を使用して、コマンド出力をキャプチャし、スペースの2文字を何も置換しない(!var:=!)ことを示し、forを別のtoから使用せずに同じ結果を達成します。
@echo off
:::::::::::::OP1 START. BY ThunderJun
setlocal enabledelayedexpansion
set remotegroup=
for /f "skip=1 delims=" %%a in ('"wmic group where sid="S-1-5-32-555" get name"') do (
set remotegroup=%%a!remotegroup:~0,-4!
set rio=!remotegroup:~0,-1!
set remotegroup=!rio:~0,-1!
)
echo OP1 "%remotegroup%"
:::::::::::::OP1 END
:::::::::::::OP2 START. BY ThunderJun
set a='"wmic group where sid="S-1-5-32-555" get name |more +1 |findstr /i "remot""'
for /f "delims=" %%c in (%a%) do (set remotegroup=%%c)
echo OP2 "%remotegroup:~0,-3%"
:::::::::::::OP2 END
:::::::::::::OP3 START. BY ThunderJun
setlocal enabledelayedexpansion
set remotegroup=
for /f "delims=" %%a in ('"wmic group where sid="S-1-5-32-555" get name |findstr "remot""') do (
set remotegroup=%%~na& set remotegroup=!remotegroup: =!)
echo OP3 "%remotegroup%"
:::::::::::::OP4 END
pause