Войти

Показать полную графическую версию : [решено] Как проверить есть ли пользователь или нет


rromms
30-04-2009, 20:44
Знающие люди, помогите разобраться с таким вопросом:
Надо проверить есть ли пользователь или нет с такой учетной записью, если есть - поменять пароль, если нет - то создать.
Как по отдельности сделать разобрался и все получается, но хочется большего...

Petya V4sechkin
30-04-2009, 21:30
Net User юзер пароль 2>nul
If %ErrorLevel% Neq 0 (
Net User юзер пароль /Add
)

rromms
01-05-2009, 14:33
Большое спасибо, буду пробовать.

If %ErrorLevel% Neq 0 - это, как понял, проверка на ошибку, которую возвращает

Net User юзер пароль 2>nul

и если код этой ошибки не равен 0, то пользователь добавляется.

А что означает "2>nul"?

Заранее Вам благодарен!

El Scorpio
01-05-2009, 14:54
2>nul »
Означает, что второй поток (сообщения об ошибках) будет направлен в устройство вывода nul (в никуда)
Без этого на экран выводилось бы "Не найдено имя пользователя"

mitiya
02-05-2009, 01:01
El Scorpio, немного не потеме, но можно по подробней про потоки. Сколько их всего и тд, или ссылочку ;)

Iska
02-05-2009, 03:50
Вкратце здесь: Стандартные потоки — Википедия (http://ru.wikipedia.org/wiki/Stdin#.D0.A1.D1.82.D0.B0.D0.BD.D0.B4.D0.B0.D1.80.D1.82.D0.BD.D1.8B.D0.B9_.D0.B2.D0.B2.D0.BE.D0.B4)

rromms
19-05-2009, 22:15
Большое спасибо за науку. Код работает на 100%.

Но столкнулся с такой вот неясной ситуацией - когда надо поменять пароль или добавить одного пользователя, то все в порядке батник работает.

А когда двух и больше, код батника вроде:

Net User юзер пароль 2>nul
If %ErrorLevel% Neq 0 (
Net User юзер пароль /Add
)

Net User юзер1 пароль1 2>nul
If %ErrorLevel% Neq 0 (
Net User юзер1 пароль1 /Add
)

в той же директории появляется файлик nulIf без расширения, в котором пишет"Неизвестный параметр /ADD)NET." и далее про синтаксис.

Однако когда пробую запустить этот же батник "psexec \\host -u user -p pass -c E:\batts\BUH.bat" , то удаленном ПК работает без проблем.

В чем может быть дело?

Petya V4sechkin
20-05-2009, 12:11
rromms, перенос строки нормальный сделайте. Другим текстовым редактором (а не тем, какой вы использовали).

rromms
20-05-2009, 18:08
Так вроде нормальный стоит - Akelpad.
Но не в этом дело.
Я собираю эти батники в процедуре MS Access - в конце каждой строки ставлю "& vbCr" - перенос строки.

Когда открываю его в Akelpad 4.15- переносы строки стоят везде.

Ручная правка переносов, типа удалить и снова поставить - не помогает.

И не работает почему-то, если локально запускать.

А если - "psexec \\host -u user -p pass -c E:\batts\BUH.bat" - работает.

В строке состояния только почему-то пишет: MAC 1251(Кириллица) - может из-за этого?

Petya V4sechkin
20-05-2009, 18:25
в конце каждой строки ставлю "& vbCr" - перенос строки.
Поменяйте на & vbCrLf

rromms
20-05-2009, 18:30
Понял, спасибо, сейчас попробую!

rromms
20-05-2009, 18:58
Спасибо, все заработало!

Petya V4sechkin
20-05-2009, 18:59
rromms, если интересуют подробности (http://ru.wikipedia.org/wiki/Перевод_строки) (что такое CR = Carriage Return = возврат каретки и LF = Line Feed = подача строки):
История

На механических пишущих машинках имелся рычаг для возврата каретки к левому краю текста. При его использовании специальный механизм прокручивал вал, подвигая бумагу вверх для освобождения места для новой строки.

На АЦПУ функции возврата каретки (головки) и подачи новой строки были разделены, откуда традиция представления перевода строки как CR LF перешла и к текстовым файлам.

root221
13-07-2011, 16:02
Petya V4sechkin, ОтжоГ =)) Хорошая история...

У меня помоему досих пор есть такая машинка, на даче, если я её невыкинул.




© OSzone.net 2001-2012