如何修复此批处理文件,以使它不会在IF语句中出错?

时间:2019-05-31 15:18:32

标签: batch-file if-statement cmd

我正在努力解决这个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 :(得分:0)

找到了。由于某种原因,%resultis%变量为空。由于某种原因,我不得不删除Y和y周围的“”。 – Todd Welch 5分钟前编辑删除 strong文字

答案 1 :(得分:0)

如果目标操作系统是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