пытаюсь сделать "ОС" в пакетном режиме - PullRequest
2 голосов
/ 14 октября 2019
    @echo off
:load
rem imitation of loading the os
color 70
ver
title boot
echo please wait...
ping localhost -n 3 >nul
cls
systeminfo
rem in here user types name he wants to be his account name
:login
title login
cls
date
cls
echo welcome to windows 71
echo before we bigen please type your name
set /P_name=here:
if %name%=admin goto admin
if not goto ms
rem ms=menu start
:ms 
echo %time%
echo hello %name% 
echo type HELP for list to commands
set /P_command=here:
if %command%=help goto help
if %command%=exit goto exit
if %command%=calendar goto cal
if not goto wc
rem wc=wrong command
:admin
echo hello %name% to the admin panel
echo type HELP for list to commands
set /P_command=here:
if %command%=help goto help
if %command%=exit goto exit
if %command%=calendar goto cal

, поэтому проблема в том, что он падает после: LOGIN части, и я не знаю, что делать! так что я пытаюсь сделать ОС в пакетном режиме (что-то вроде MS-DOS), но он выходит из строя после «входа в систему», я попробовал все, что мог придумать, и это не сработало, также я хочу сделать файл сохранения, чтобы пользователь мог установитьпароль для их "учетной записи".

1 Ответ

0 голосов
/ 14 октября 2019

Как уже упоминалось в комментариях выше, вам нужно правильно использовать переменные, однако вы можете использовать choice вместо set /p для своих команд.

@echo off
:load
rem imitation of loading the os
color 70
ver
title boot
echo please wait...
timeout /t 3 >nul
cls
systeminfo
rem in here user types name he wants to be his account name
:login
title login
cls
date /t
timeout /t 2>nul
cls
echo welcome to windows 71
echo Before we begin please type your name
set /P "_name=here:"
if /i "_%name%"=="admin" goto admin
rem ms=menu start
:ms 
echo %time%
echo hello %_name% 
echo type HELP for list to commands
CHOICE /C HEC /M "Press H for Help, E to exit C for Calender."
goto opt%errorlevel%

:admin
echo hello %_name% to the admin panel
echo type HELP for list to commands
CHOICE /C HEC /M "Press H for Help, E to exit C for Calender."
goto opt%errorlevel%

:opt1
echo Help stuff goes here

goto :eof
:opt2
exit

:opt3
echo Calenders stuff goes here

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

Обратите внимание, где возникли проблемыв вашем коде. то есть if %name%=admin должно быть if "%_name%"=="admin" с двойным знаком равенства и подчеркиванием в имени. Это также двойные кавычки, чтобы убедиться, что мы делаем совпадение без лишних пробелов. Наконец, /I опция для перехвата ADMIN в любом случае.

См. if /?, choice /? из командной строки для получения дополнительной помощи по этим функциям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...