在工作中,我每天为新用户设置几台计算机。我使用的批处理文件提供了 3 个选项:
1.添加新用户
2.更改电脑名称
3.两者皆有
当从自己的批处理文件运行时,它们都工作得很好,但是当将代码复制/粘贴到 IF 语句中时,只有 IF 语句“2”有效。我究竟做错了什么?
安装程序要求输入 1、2 或 3。
提前致谢!!
set /p choose=Enter your selection here:
if %choose%==1 (
set /p user=Enter Username, then press Enter to create new user with default password:
net user "%user%" LSCpass14 /add
)
if %choose%==2 (
set /P pcname=Please enter this computer's LSC Asset Tag number, eg. 1295:
REG ADD HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters /v "NV Hostname" /t REG_SZ /d "LSC-%pcname%" /f
set /p reboot=You will need to restart your computer for these changes to be applied. Would you like to restart now? [y/n] )
if %reboot%==y start shutdown -r -t 00
)
if %choose%==3 (
set /p user=Enter Username, then press Enter to create new user with default password:
net user "%user%" LSCpass14 /add
set /P pcname=Please enter this computer's LSC Asset Tag number, eg. 1295 :
REG ADD HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters /v "NV Hostname" /t REG_SZ /d "LSC-%pcname%" /f
set /p reboot=You will need to restart your computer for these changes to be applied. Would you like to restart now? (y\n)
if %reboot%==y start shutdown -r -t 00
)
使用此代码时,由于字符串中存在特殊字符,因此需要将所有字符串括在双引号中。
@echo off
setlocal EnableDelayedExpansion
set /p "choose=Enter your selection here: "
if "!choose!"=="1" (
echo Enter user name, then press Enter to create new user with default password.
set /p "user=User name: "
%SystemRoot%\system32\net.exe user "!user!" LSCpass14 /add
) else if "!choose!"=="2" (
set /P "pcname=Please enter this computer's LSC Asset Tag number, eg. 1295: "
%SystemRoot%\system32\reg.exe ADD HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters /v "NV Hostname" /t REG_SZ /d "LSC-!pcname!" /f
echo You will need to restart your computer for these changes to be applied.
set /p "reboot=Would you like to restart now? [y/n] "
if /i "!reboot!"=="y" start %SystemRoot%\system32\shutdown.exe -r -t 00
) else if "!choose!"=="3" (
echo Enter user name, then press Enter to create new user with default password.
set /p "user=User name: "
%SystemRoot%\system32\net.exe user "!user!" LSCpass14 /add
set /P "pcname=Please enter this computer's LSC Asset Tag number, eg. 1295 : "
%SystemRoot%\system32\reg.exe ADD HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters /v "NV Hostname" /t REG_SZ /d "LSC-!pcname!" /f
echo You will need to restart your computer for these changes to be applied.
set /p "reboot=Would you like to restart now? [y/n] "
if /i "!reboot!"=="y" start %SystemRoot%\system32\shutdown.exe -r -t 00
)
endlocal
输入后在命令提示符窗口的最后一页输出help cmd
or cmd /?
显示字符列表,需要将字符串括在双引号中。圆括号和方括号也属于这组特殊字符。批处理代码说明了原因()
具有特殊含义,因此包含它们的字符串实际上需要用双引号引起来。
并且需要使用环境变量的延迟扩展,如输入后帮助输出中所解释的set /?
or help set
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)