Ваш вопрос линия:
:ex)
Это не имеет никакого смысла для партии, метки не может быть в блоке кода, поскольку он ломает блок и партия отказывается из-за синтаксической ошибки.
Вы можете решить эту проблему, проверив имя учетной записи за пределами блока с помощью call
; как goto :eof
, используемый после call
, возвращается к 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
, вы можете использовать %1
получить значение на перевале %variable%
«s, и ~
могут быть добавлены с помощью %~1
удалить цитаты. Это в основном полезно, чтобы принять значение %%X
вне цикла for для упрощения обработки.
Или использовать вложенный метод 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
и это для стабильности, в случае, будущее имя вызывает ошибки синтаксиса.
Этот код работает, но удаляет каждую учетную запись администратора, но Administrator, даже MWAdmin ... – vartier
Кроме того, добро пожаловать в переполнение стека, спасибо за то, что вы указали свою попытку и не задумываетесь над подробными подробностями. В будущем вы можете отредактировать сообщение, чтобы добавить ошибку, вместо того, чтобы оставлять ее в качестве комментария. Не забудьте отметить, что решает ваш ответ с помощью галочки. – Bloodied