我正在拔头发,在这个 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
如果您的目标操作系统是 Windows Vista 或更高版本,我建议您使用 choice.exe
作为由一小组预定义的已知响应之一组成的用户输入。
在下面的示例中,我包含了一些代码来尝试预先确定机箱是否是笔记本电脑/笔记本电脑。如果无法确定,将调用输入提示。
@Echo Off
For /F "EOL=C Delims={}" %%A In ('
""%__AppDir__%wbemWMIC.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
找到了。由于某种原因,%resultis% 变量为空。出于某种原因,我不得不删除 Y 和 y 周围的"。