Как я могу исправить этот пакетный файл, чтобы он не выдавал ошибку в операторе IF? - PullRequest
0 голосов
/ 31 мая 2019

Я вырываю голову, получая сообщение об ошибке в этом операторе IF

IF %resultis%=="true" (

Пакетный файл попадает в паузу прямо перед ним, но сразу после этого появляется какая-то ошибка, которая быстро отображается для меня, чтобы увидетьчто это такое.

Вот полный сценарий:

@Echo off
Echo "Adding Chrysaliser user to Users group and removing from Administrators"
REM net localgroup Users Chrysaliser /add
REM net localgroup Administrators Chrysaliser /delete

REM SET /P password= Enter ladmin user password: 
REM net user ladmin %password% /ADD
REM net localgroup Administrators ladmin /add

SET /P alaptop= Is this a laptop? (Y/N): 
echo %alaptop%
IF %alaptop%=="Y" (SET resultis="true")
IF %alaptop%=="y" (SET resultis="true")
pause
IF %resultis%=="true" (
    pause   
    SET /P password= Enter Lockedout user password: 
    pause
    net user Lockedout %password% /ADD
    net localgroup Users Lockedout /add
    net localgroup Administrators Chrysaliser /delete

)
Echo Getting install files
mkdir %SYSTEMDRIVE%\files
SET /P username= Enter your domain admin username: 
SET/P password= Enter your domain admin password:
net use \\server /user:%username% $password%
pause

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Если вашей целевой операционной системой является Windows Vista или более поздняя, ​​я бы посоветовал вам использовать choice.exe для пользовательского ввода, состоящего из одного заранее определенного набора известных ответов.

В приведенном ниже примереЯ включил некоторый код, чтобы попытаться предварительно определить, является ли корпус ноутбуком / ноутбуком.Если это невозможно определить, будет вызвано приглашение для ввода.

@Echo Off

For /F "EOL=C Delims={}" %%A In ('
    ""%__AppDir__%wbem\WMIC.exe" SystemEnclosure Get ChassisTypes 2>Nul"'
) Do For %%B In (%%A) Do If %%B GEq 9 If %%B LEq 10 Set "ResultIs=T"
If Not "%ResultIs%"=="T" ("%__AppDir__%choice.exe" /M "Is this a laptop"
    If ErrorLevel 2 GoTo :Continue)

Rem Laptop specific code goes here
Echo You are using a laptop

:Continue
Rem The rest of your code goes here
Echo Continuing . . .
Pause
0 голосов
/ 31 мая 2019

Нашел это.Переменная% resultis% по какой-то причине была пустой.Мне пришлось удалить "" вокруг Y и y по какой-то причине.

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