2016-04-01 3 views
0

У меня есть большая проблема с попыткой удалить все учетные записи администратора (около 2 specyfic), используя сетевые локальные группы. Проблема в том, что нет оператора И, поэтому это должно быть сделано более сложно.Удаление нескольких учетных записей администратора в пакетном режиме (Win7)

for /F "tokens=*" %%G in ('net localgroup administrators') Do (
If %%G == Administrator (goto:ex) 
If %%G == MWAdmin (goto:ex) 
net localgroup administrators %%G /delete 
:ex) 
+0

Этот код работает, но удаляет каждую учетную запись администратора, но Administrator, даже MWAdmin ... – vartier

+0

Кроме того, добро пожаловать в переполнение стека, спасибо за то, что вы указали свою попытку и не задумываетесь над подробными подробностями. В будущем вы можете отредактировать сообщение, чтобы добавить ошибку, вместо того, чтобы оставлять ее в качестве комментария. Не забудьте отметить, что решает ваш ответ с помощью галочки. – Bloodied

ответ

0

Ваш вопрос линия:

: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 для упрощения обработки.


Или использовать вложенный метод neqneq и в цикле;

for /f "tokens=*" %%G in ('net localgroup administrators') do (
    if "%%~G" neq "Administrator" (
     if "%%~G" neq "MWAdmin" (
      net localgroup administrators %%G /delete 
     ) 
    ) 
) 

Примечание я сделал %%G в %%~G, и добавил кавычки AdministratorMWAdmin и это для стабильности, в случае, будущее имя вызывает ошибки синтаксиса.

Смежные вопросы