2015-12-15 4 views
-1

Вот мой сценарий. Проблема у меня в том, что он просто в основном игнорирует мои «если Равно» Я пробовал различные различные способыerrorlevel с psexec и netuser

for /f %%F in (C:\IPLIST.txt) do (
pstools\psexec.exe \\%%F -u administrator -p password net user administrator password1 
if %errorlevel% NEQ 0 goto two 
:two 
pstools\psexec.exe \\%%F -u administrator -p password3 net user administrator password2 
) 

Так что просматривает список TXT файла IP-адреса и меняет пароль локального администратора. эти 2 команды должны дать ему разные аутентификационные данные, теперь я знаю, что могу это сделать с помощью pspasswd, но переключатели -u -p не будут работать. но это работает .. его, только если первая команда успешно завершена и выходит с кодом ошибки 0, она по-прежнему запускает вторую команду для одного и того же IP-адреса. Я хочу, чтобы он игнорировал вторую команду для этого IP-адреса, если первая удалась. и просто продолжайте движение вниз по списку.

Это потому, что я использую сетевой пользователь или pstools, и почему он его игнорирует?

+0

Вы не можете использовать GOTO в середине блока FOR. Он прерывает команду FOR. – Squashman

+0

Непонимание вашей проблемы с использованием PSPASSWD. Он должен работать нормально. – Squashman

+0

, так есть ли работа, чтобы использовать команду goto в цикле for? – Arotin

ответ

0
@echo off 
for /f %%F in (C:\IPLIST.txt) do (
    pstools\psexec.exe \\%%F -u administrator -p password net user administrator password1 
    if errorlevel 1 pstools\psexec.exe \\%%F -u administrator -p password3 net user administrator password2 
    if errorlevel 1 pstools\psexec.exe \\%%F -u administrator -p password5 net user administrator password5 
    echo Rinse and Repeat 
) 
+0

Это не работает. '% errorlevel%' находится внутри блока кода, поэтому для этого потребуется отсроченное расширение. Проще просто использовать 'if errorlevel 1', который эквивалентен« если% errorlevel% больше 0 »(если pstools просто возвращают положительные значения уровня ошибок) – Aacini

+0

@Aacini, спасибо. Не думал, когда писал это! – Squashman

0
for /f %%F in (C:\IPLIST.txt) do (
    pstools\psexec.exe \%%F -u administrator -p password net user administrator password1 
    if !errorlevel! NEQ 0 pstools\psexec.exe \%%F -u administrator -p password3 net user administrator password2 
) 

это работает. ответил мой вопрос. спасибо

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