我是编写批处理脚本的新手,我不断收到错误。基本上我编写的代码应该是创建帐户并将其提升为管理员状态的替代界面。到目前为止,我写了:
@echo off
echo Account Name:
set /p name=
set nameacc = %name%
echo Account Password:
set /p password=
set passacc = %password%
net user /add "%name%" & "%password%"
cls
echo Account %name%,password: %password% created
pause
echo Would you like to elevate to Admin privelages? Y/N
set /p choice=
if '%choice%' == 'Y' goto A
if '%choice%' == 'N' goto B
:A
echo Elevating your Account...
net localgroup administrators %nameacc /add
echo Account created... Have fun..
pause
=exit
:B
exit
我遇到的一个问题是,如果输入的密码与控制台命令相同,则会返回该命令的帮助屏幕。
答案 0 :(得分:5)
那是因为&
是在一行上运行两个单独命令的方法。
net user /add "%name%" & "%password%"
表示运行net user ...
,然后运行%password%扩展为
我目前无法对其进行测试,但我认为语法只是
net user /add %name% %password%
作为旁注,我将您的管理员选择更改为
if /i '%choice:~0,1%' == 'Y' (goto A) else (goto B)
您拥有它的方式,您更有可能错误地创建管理员帐户。
答案 1 :(得分:3)
像这样设置的变量包括变量名称和内容中的空格
set passacc = %password%
请改用此方法:
set "passacc=%password%"
此外,此行缺少%
net localgroup administrators %nameacc /add
答案 2 :(得分:0)
一些评论:
goto :EOF
可能是EXIT
的替代品,第一个退出当前脚本,最后一个退出任何脚本,子或父:B
中执行任何操作,如果是故意的,您可以退出IF
语句如果您想填充变量nameacc
,只需使用set /p nameacc=
,无需涉及其他变量
@echo off
echo Account Name:
set /p name=
set nameacc=%name%
echo Account Password:
set /p password=
set passacc=%password%
net user /add "%name%" "%password%"
cls
echo Account "%name%",password: "%password%" created
pause
echo Would you like to elevate to Admin privelages? Y/N
set /p choice=
if '%choice%'=='Y' goto :A
if '%choice%'=='N' goto :B
goto :wronganswer
:A
echo Elevating your Account...
net localgroup administrators %nameacc% /add
echo Account created... Have fun..
pause
exit
:B
exit
:wronganswer
echo Wrong answer
goto :EOF