Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows批处理密码保护?_Windows_Batch File_Cmd_Passwords - Fatal编程技术网

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 (

我一直使用批处理文件来保护Windows命令提示符的密码。这两种方法都不能正常工作。若它并没有显示语法错误,那个么即使输入正确的密码,它也无法检查。代码如下:

@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: "