我有一个批处理文件,会提示用户提供用户名和密码。我正在尝试检查密码中是否包含用户名。我找到了这个例子,但似乎无法让它起作用:
@setlocal enableextensions enabledelayedexpansion
@echo off
SET /P userName=%1
SET /P userPassword=%1
if not x%userPassword:userName=%==x%userPassword% (
GOTO createUser
)else (
GOTO invalidPassword
)
我使用这些值来创建Windows用户帐户:
:createUser
net user %$userName% "%$userPassword%" /ADD /PASSWORDCHG:NO
WMIC USERACCOUNT WHERE "Name="%$userName%"" SET PasswordExpires=FALSE
:invalidPassword
ECHO password contains user name
答案 0 :(得分:1)
这应该有效:
@echo off
setlocal enabledelayedexpansion
set /p userName=Username:
set /p userPassword=Password:
set replacedUsername=!userPassword:%userName%=!
if not !replacedUsername!==%userPassword% (
echo invalid password
pause
exit
)
net user %$userName% "%$userPassword%" /ADD /PASSWORDCHG:NO
WMIC USERACCOUNT WHERE "Name="%$userName%"" SET PasswordExpires=FALSE
用户输入名称和密码后,我们将用户名作为子字符串,并将密码内的子字符串替换为空字符串。如果密码保持不变,我们知道:用户名不是密码字符串的子字符串。否则,修改后的密码将与原始密码不同,因此我们知道它是无效的。