Я могу использовать ERRORLEVEL, но попытался, и с петлей это не удалось. Я пишу пакетную «оболочку». Поскольку я пытался и пытался, я, наконец, прошу о помощи. Причина, по которой я не хочу использовать errorlevel, - это цикл.Как найти определенное слово в файле без использования ERRORLEVEL (пакетный)
(FULL) SHELL
@set /p build=<"C:\Users\%username%\Desktop\WellOS2\WellOS\Build".txt
@title WellOS V.%build%
@echo off
goto boot
:register
cls
echo You are registering...
echo If this is an error press CTRL + C NOW...
pause
cls
set /p user= Enter your username:
set /p passwordreg= Enter your password:
mkdir "C:\Users\%username%\Desktop\WellOS2\Users\%user%"
mkdir "C:\Users\%username%\Desktop\WellOS2\Users\%user%\Documents"
echo %passwordreg% >"C:\Users\%username%\Desktop\WellOS2\Users\%user%\password".txt
echo 2 >"C:\Users\%username%\Desktop\WellOS2\OSfiles\bootset".txt
echo Your done.
pause
goto welloslog
:booterror
echo Sorry the boot file has an error. Check the user manual for BOOT$
pause
:boot
set /p boot=<"C:\Users\%username%\Desktop\WellOS2\OSfiles\bootset".txt
if %boot% == 1 goto register
if %boot% == 2 goto welloslog
goto booterror
cls
:ERROR
cls
echo ----------ERROR-------------------
echo %error%
pause
goto %back%
:welloslog
cls
echo Welcome to WellOS2!
echo ----------------LOGIN-------------
set /p user= Username:
if exist "C:\Users\%username%\Desktop\WellOS2\Users\%user%" goto pass
set error= Sorry that account doesn't exist.
set back=welloslog
goto welloslogerror
:pass
set /p password=<"C:\Users\%username%\Desktop\WellOS2\Users\%user%\password".txt
set /p passwordlog= Password:
if /i %passwordlog% == %password% goto wellos
set error= Sorry! wrong password.
set back= welloslog
goto error
:wellos
cls
:wellosnocls
echo --------------MAIN---------------
echo type help for help
set /p command= #:
if exist "C:\Users\%username%\Desktop\WellOS2\Programdata\%command%.sys" set type=sys
if exist "C:\Users\%username%\Desktop\WellOS2\Programdata\%command%.pro" set type=pro
if exist "C:\Users\%username%\Desktop\WellOS2\Programdata\%command%.sys" goto po
if exist "C:\Users\%username%\Desktop\WellOS2\Programdata\%command%.pro" goto po
set error= !Unreconized program/system program!
set back=wellos
goto error
:po
set lines=0
echo --------------%command%.%type%---------------
:porep
set /a lines=%lines% + 1
set /p "code="<"C:\Users\%username%\Desktop\WellOS2\Programdata\%command%.%type%\%command%.%type%-%lines%".wellcode
if "%code%"=="GOWELL" goto wellosnocls
findstr /I /L "if" "C:\Users\%username%\Desktop\WellOS2\Programdata\%command%.%type%\%command%.%type%-%lines%.wellcode"
:skip
call %code%
goto porep
::Tools
:iftl
%code%
goto porep
ПРОГРАММА OPENER (То, что я говорю, и проблемы с ...)
:po
set lines=0
echo --------------%command%.%type%---------------
:porep
set /a lines=%lines% + 1
set /p "code="<"C:\Users\%username%\Desktop\WellOS2\Programdata\%command%.%type%\%command%.%type%-%lines%".wellcode
if "%code%"=="GOWELL" goto wellosnocls
findstr /I /L "if" "C:\Users\%username%\Desktop\WellOS2\Programdata\%command%.%type%\%command%.%type%-%lines%.wellcode" goto iftl
:skip
call %code%
goto porep
::Tools
:iftl
%code%
goto porep
Почему 'ErrorLevel' не возможно? 'find' /' findstr' (re) установить его, если найдено совпадение/нет, поэтому после запроса сразу же он даст результат; если вы запросите 'ErrorLevel' в цикле/блоке, используйте [замедленное расширение] (http://ss64.com/nt/delayedexpansion.html) и используйте'! ErrorLevel! ', а не'% ErrorLevel% '... альтернативно проверьте, не является ли вывод 'find' /' findstr' пустым, путем разбора его с помощью 'for/F' ... – aschipfl
Почти все, что вы запустили, будет устанавливать' ERRORLEVEL', даже если он просто устанавливает значение 0 для указания успеха. Если вы должны сохранить его, то лучше всего сохранить его в переменной, запустить свои команды и затем восстановить. См. Http: // stackoverflow.com/questions/6498460/batch-programming-error-handling-and-start-command/6527436 # 6527436 –
Я готов поспорить, что вы использовали '% errorlevel%' внутри цикла, когда вы должны были использовать ' ! Равно! '. – SomethingDark