Мне нужна помощь с партией. Я создал этот пакетный файл, используя операторы условной обработки для обнаружения ошибок. Для этого пакетного файла не должно оставаться НИКАКИХ символов условной обработки. Мне нужно удалить их и использовать «IF ERRORLEVEL» для обнаружения ошибок. Мы не можем использовать «IF %ERRORLEVEL%» или что-то еще, мы находимся только на вводном этапе. Нам также нужно использовать команду net user. Я застрял.
Исходный код, работающий с операторами условной обработки:
@echo off
rem Check if the account already exists before creating account. If it does not exist, go to :FAIL
net user | find /i "%1" >nul 2>&1 && GOTO FAIL
rem Add a user if the account does not exist and then go to :SUCCESS
net user %1 %1 /add >nul 2>&1 || GOTO ERROR
GOTO SUCCESS
rem If the user does not already exist and is succesfully added
:SUCCESS
echo The %1 user was succesfully added.
GOTO :EOF
rem If the user already exists
:FAIL
echo The %1 user already exists on this computer.
echo Please use a different username.
GOTO :EOF
rem Send system generated errors messages to ECHO
:ERROR
echo An Error was generated when attempting to create the user
echo These are the things you can check:
echo Did you open the command prompt as administrator?
echo If passwords are required on your system, did you include one?
GOTO :EOF
:END
Что я знаю:
- Если учетная запись уже существует, уровень ошибки равен 0.
- Если учетная запись не существует, но она создана, уровень ошибки равен 0.
- Если командная строка не запущена от имени администратора или политика паролей не соответствует
, уровень ошибки равен 2.
На самом деле я ничего не знаю об этом, потому что кажется, что мой уровень ошибок меняется, чем больше я экспериментирую... Я застрял... В одной из командных строк я получил уровень ошибки 1, так что... также является ли GOTO :EOF условной обработкой?
Как выполнить этот скрипт? Я застрял. Пробовал кое-что, но в итоге застрял. Вот что у меня есть, от чего я отказался.
Код, который у меня есть, без операторов условной обработки и IF ERRORLEVEL:
@echo off
IF ERRORLEVEL 2 (
rem Send system generated errors messages to ECHO
echo An Error was generated when attempting to create the user
echo These are the things you can check:
echo Did you open the command prompt as administrator?
echo If passwords are required on your system, did you include one?
GOTO :EOF
)
:: Check if the account already exists before creating account. If it does not exist, go to :FAIL
net user | find /i "%1"
IF ERRORLEVEL 0 (
rem If the user already exists
echo The %1 user already exists on this computer.
echo Please use a different username.
GOTO :EOF
)
:: Add a user if the account does not exist and then go to :SUCCESS
net user %1 %1 /add
IF ERRORLEVEL 0 (
REM If the user does not already exist and is succesfully added
echo The %1 user was succesfully added.
GOTO :EOF
)
:END
if errorlevel <n>
на самом деле обрабатывается так, как если бы уровень ошибки был ‹n› или выше, поэтомуif errorlevel 0
на самом деле просто проверяет, не является ли уровень ошибки отрицательным. Вы, вероятно, хотитеif not errorlevel 1
- person Stephan   schedule 15.03.2020