Sorununuz çizgidir.
Bunu, bloğun dışındaki hesap adını call
; call
'dan sonra goto :eof
kullanıldıktan sonra call
'a geri dönülür, böylece bir for döngüsünde bıraktığı yere bırakılır ve geri dönülür.
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
Her ihtimale vurgulamak sağlar:
call :label "%variable%"
bu o :label
gittiğinde, pass %variable%
'ın değeri elde etmek %1
kullanabileceğiniz anlamına gelir kullanma ve ~
ile eklenebilir Tırnakları kaldırmak için %~1
. Bu daha kolay işlem için bir döngü dışında %%X
değerini almak için yararlıdır.
ya da döngü için bir neq
ve iç içe neq
yöntemi kullanmak; gelecekteki bir isim sözdizimi hatalarına yol açar durum
for /f "tokens=*" %%G in ('net localgroup administrators') do (
if "%%~G" neq "Administrator" (
if "%%~G" neq "MWAdmin" (
net localgroup administrators %%G /delete
)
)
)
Not i %%~G
içine %%G
yapılan ve Administrator
ve MWAdmin
etrafında tırnak eklendi, bu, istikrar içindir.
Bu kod çalışıyor, ancak her yönetici hesabını siliyor ama Yönetici, hatta MWAdmin ... – vartier
Ayrıca, taşma yığınına hoş geldiniz, teşebbüsünüzü gösterdiğiniz için teşekkürler ve ayrıntılı ayrıntılara oturmayın. Gelecekte, yorumunuzu bırakmak yerine, hata eklemek için yayınınızı düzenleyebilirsiniz. Cevabınızı çözdüğünüzün işaretini işaretlemeyi unutmayın. – Bloodied