.bat файлах достаточно писать команды каждую на отдельной строке."Администраторы".@echo off
net user /add admin password
net localgroup "Администраторы" admin /add
net localgroup "Администраторы" User /delete
pause@echo off
setlocal enabledelayedexpansion
:: Получаем переданный логин или генерируем случайный
set "username=%~1"
if "!username!"=="" (
call :GenerateRandomName username
)
:: Проверка и повторная генерация, если имя занято (до 10 попыток)
set max_attempts=10
set attempt=0
:CheckUser
net user "!username!" >nul 2>&1
if %errorlevel% equ 0 (
echo Пользователь "!username!" уже существует.
set /a attempt+=1
if !attempt! geq %max_attempts% (
echo Не удалось сгенерировать уникальное имя за %max_attempts% попыток. Завершение.
exit /b 1
)
call :GenerateRandomName username
goto CheckUser
)
:: Создаём пользователя
echo Создаём пользователя: !username!
net user "!username!" "" /add
if %errorlevel% neq 0 (
echo Ошибка при создании пользователя.
exit /b 1
)
:: Добавляем в группу Администраторы
echo Добавляем пользователя в группу Администраторы...
net localgroup Администраторы "!username!" /add
if %errorlevel% neq 0 (
echo Ошибка при добавлении в группу Администраторы.
exit /b 1
)
:: Убираем "User" из группы Администраторы (если есть)
echo Проверяем, состоит ли User в группе Администраторы...
net localgroup Администраторы | findstr /i "\\User$" >nul
if %errorlevel% equ 0 (
echo Убираем User из группы Администраторы...
net localgroup Администраторы User /delete >nul 2>&1
) else (
echo Пользователь User не входит в группу Администраторы — пропускаем.
)
echo Готово. Учётная запись "!username!" создана и назначена администратором.
pause
exit /b 0
:: =====================
:: Подпрограмма генерации случайного имени
:GenerateRandomName
setlocal
:: Инициализируем %random% (иногда требуется)
call :GetRandom rand 1000 9999
set "name=User_!rand!"
endlocal & set "%1=%name%"
exit /b
:GetRandom
set /a %1=%random% %% (%3 - %2 + 1) + %2
exit /b