Скрипт закрывается всякий раз, когда я набираю «2» и нажимаю Enter. Я проверил шлейф, но он выглядит нормально. Сначала я подумал, что это ошибка некоторых переменных, но это не так. Также этот скрипт проверяет права администратора, но не работает. Я мог успешно выполнять все команды, не загружая их с правами администратора. Это мой код, кстати.
@echo off
chcp 65001 >nul
color 0A
title Slimy's Account Hacking Tool
set /p pass = "Enter password: "
cls
if "%pass%" NEQ "slimy" exit
:menu
echo.
echo ***************
echo Menu
echo ***************
echo.
echo.
echo 1) List Users on Computer
echo 2) Create a New User
echo 3) Change a User's Password
echo 4) Delete a User Account
echo 5) Exit Slimy's Account Hacking Tool
echo.
set /p input = "©️ "
if %input% EQU 1 (
title List Users
cls
net user
pause
cls
goto menu
)
if "%input%" EQU 2 (
call checkadmin
title Create a New User
cls
set /p user = "USERNAME: "
set /p password = "PASSWORD: "
net user %user% %password% /add
echo New user created with credentials:
echo %user% : %password%
pause
cls
goto menu
)
if %input% EQU 3 (
call checkadmin
title Change a USer's Password
cls
set /p username = "TARGET USER: "
set /p passsword = "NEW PASSWORD: "
net user %username% %password%
pause
cls
goto menu
)
if %input% EQU 4 (
cls
echo you have no morals and are messed up for trying to do this.
timeout /t 3
cls
goto menu
)
if %input% EQU 5 Exit
:checkadmin
net session >nul
if %errorlevel% NEQ 0 (
cls
echo.
echo Restart the script and run it as admin.
)
Я пытался переписать весь код, но это не помогло. Пожалуйста, помогите. Я был бы признателен!
@JohnGordon У тебя не добрый язык. Новые пользователи как маленькие дети. Мы должны быть чрезвычайно терпеливы к их оплошностям. ОП, спасибо за предоставленный источник.
call checkadmin
пытается вызвать внешний скрипт. Чтобы вызвать метку в том же скрипте, вам НУЖНО двоеточие: call :checkadmin
(кроме GOTO
, для которого не важно, есть двоеточие или нет)
Помимо приведенных выше советов, я вижу еще одну проблему с отправленным вами кодом. Вы одновременно создаете переменные и пытаетесь использовать их в блоке кода в скобках. По этой причине ввод 2
или 3
не приведет к достижению намеченных команд net.exe
без изменения структуры или включения отложенного расширения переменной.
Обратите внимание, что ваше условие для «2» заключено в кавычки вокруг имени переменной:
if "%input%" EQU 2 (
Тогда сравнение становится таким: равен ли "2"
2
. Ответ — нет.
Использование кавычек часто является хорошей идеей, но вы также должны заключать кавычки с другой стороны:
if "%input%" EQU "2" (
Также обратите внимание, что ваш скрипт заканчивается символом exit
, который завершает работу интерпретатора cmd. Если вы хотите только завершить свой скрипт, вместо этого вам следует использовать один из goto :EOF
или exit /b
.
Как вы ожидаете от нас помощи, не показывая командный файл? Думаешь, у нас есть хрустальный шар?