查找substring是否在字符串中

时间:2017-03-23 11:59:36

标签: windows validation batch-file cmd

我有一个批处理文件,会提示用户提供用户名和密码。我正在尝试检查密码中是否包含用户名。我找到了这个例子,但似乎无法让它起作用:

@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

1 个答案:

答案 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

用户输入名称和密码后,我们将用户名作为子字符串,并将密码内的子字符串替换为空字符串。如果密码保持不变,我们知道:用户名不是密码字符串的子字符串。否则,修改后的密码将与原始密码不同,因此我们知道它是无效的。

相关问题