Windows批处理密码保护?
我一直使用批处理文件来保护Windows命令提示符的密码。这两种方法都不能正常工作。若它并没有显示语法错误,那个么即使输入正确的密码,它也无法检查。代码如下:Windows批处理密码保护?,windows,batch-file,cmd,passwords,Windows,Batch File,Cmd,Passwords,我一直使用批处理文件来保护Windows命令提示符的密码。这两种方法都不能正常工作。若它并没有显示语法错误,那个么即使输入正确的密码,它也无法检查。代码如下: @echo off echo Computer password protected. echo. :PSW set /p "PASS" = "Enter password: " IF "%PASS%"=="kerberos" ( echo Welcome. echo. goto EOF ) ELSE (
@echo off
echo Computer password protected.
echo.
:PSW
set /p "PASS" = "Enter password: "
IF "%PASS%"=="kerberos" (
echo Welcome.
echo.
goto EOF
) ELSE (
echo Wrong password! Try again.
echo.
goto PSW
)
:EOF
我保留了密码,因为这只是一个测试,看看它是否正常工作,以及它实际上是如何工作的。不要在set
命令中添加“
或空格
e、 g
请注意“
和空格是如何成为环境变量的一部分的
改为这样做:
C:\Users\marc>set /p pass3="prompt: "
^^^^^^^---note: no quotes, no space
prompt: kittens
C:\Users\mbb190>echo %pass3%
kittens
set/p
语法错误。您需要使用:
set /p PASS="Enter password: "
您还可以引用赋值
set/p“pass3=prompt:”
,这样同一脚本在虚拟机中运行的MS-DOS下就不能工作。看起来我必须搜索其他语法才能在变量中获得提示值。据我记忆所及,set
不支持纯MS-DOS中的/P
开关不幸的是……我已经在MS-DOS帮助中检查过了。我不知道如何在MS-DOS中通过提示行方便地填写变量。也许它不是设计为通过简单的批处理脚本实现的。一个简单的程序实际上可以完成这项工作,但它需要先用QuickBasic或其他编程语言编写,然后编译成EXE或COM(COM会更好)。此外,它还应该处理其他字符,如空格和函数间的特殊字符。Smart然后可能会使用DOS安装软盘、重新启动、退出安装并删除批处理行(以及可能的删除程序)。
set /p PASS="Enter password: "