あなたの問題はラインです:
:ex)
これは、バッチには意味がありません、それはブロックを破壊し、バッチが原因構文エラーになりますよう、ラベルは、コードブロックにすることはできません。
ブロック外のアカウント名をcall
にチェックすることで解決できます。 call
の後にgoto :eof
が使用され、call
に戻って、forループで中断した箇所に戻って戻ることができます。
for /f "tokens=*" %%G in ('net localgroup administrators') do (
call :checkName "%%~G"
)
:: If name matches if, go back to for loop, else del.
:checkName
if "%~1" == "Administrator" goto :eof
if "%~1" == "MWAdmin" goto :eof
net localgroup administrators "%~1" /delete
goto :eof
は、念のために、ハイライトすることができます:
call :label "%variable%"
が、これはそれが:label
に行くとき、あなたはパス上の%variable%
の値を取得するために%1
を使用できることを意味使用し、~
をして追加することができます%~1
引用符を削除します。これは、処理を容易にするために、ループの外側に%%X
の値を取ることが主に有効です。
またはループのためにneq
およびネストneq
方法を使用します。
for /f "tokens=*" %%G in ('net localgroup administrators') do (
if "%%~G" neq "Administrator" (
if "%%~G" neq "MWAdmin" (
net localgroup administrators %%G /delete
)
)
)
注私は%%~G
に%%G
を行い、将来の名前が構文エラーの原因に-場合、これは、安定性のためにあり、Administrator
とMWAdmin
の前後に引用符を追加しました。
このコードは動作していますが、管理者、管理者、さらにはMWAdminを削除しています... – vartier
また、オーバーフローをスタックすることを歓迎します。将来はコメントを残すのではなく、投稿を編集してエラーを追加することができます。あなたの答えをチェックするには、それが何をマークしているのを覚えておいてください。 – Bloodied