【问题标题】:How to count characters of SET command batch and "encrypt" it如何计算 SET 命令批处理的字符并“加密”它
【发布时间】:2014-08-01 06:15:06
【问题描述】:

我又需要了。 这次我需要从命令 SET 中计算字符,有什么办法吗? 所以这是我的代码,我需要将密码“加密”为*并回显它。 这是我的代码:

:REGISTER
CLS
SET /P USERNAME=Username: 
SET /P PASSWORD=Password: 
CLS
ECHO Username: %USERNAME%
ECHO Password: ******** <<<<< Here's where i wan't to "encrypt" the password to *'s
SET /P CONFIRM_PASSWORD=Confirm password: 
:MOREcodes

编辑:感谢 MC ND 的遮阳篷! 所以我这样做了:

    @ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
SET /P PASSWORD=Password: 
CLS
FOR /F "delims=" %%a IN ('CMD /V:ON /Q /U /C"ECHO(^!PASSWORD^!"^|MORE'
) DO (
SET "HIDDEN_PASSWORD=!HIDDEN_PASSWORD!*"
)
ECHO Password: %HIDDEN_PASSWORD%
PAUSE
SETLOCAL DISABLEEXTENSIONS DISABLEDELAYEDEXPANSION
EXIT

【问题讨论】:

    标签: batch-file encryption


    【解决方案1】:
    @echo off
        setlocal enableextensions disabledelayedexpansion
    
        :: save value into password variable
    
        set "password=0123456789 <&!**$."
    
        :: echo value to console (to test length)
    
        setlocal enabledelayedexpansion
        echo(!password!
        endlocal
    
        :: echo *s for each character in password
    
        for /f "delims=" %%a in (
            'cmd /v:on /q /u /c"echo(!password!"^|more'
        ) do (set/p"=*"<nul)
    

    编辑以适应 cmets。将 *s 存储在变量中

    @echo off
        setlocal enableextensions enabledelayedexpansion
    
        set "password=0123456789 <&^!**$."
    
        set "maskedPassword="
        for /f "delims=" %%a in (
            'cmd /v:on /q /u /c"echo(^!password^!"^|more'
        ) do (
            set "maskedPassword=!maskedPassword!*"
        )
    
        echo(!password!
        echo(%maskedPassword%
    

    【讨论】:

    • 完美,但如何将 * 保存到变量中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    相关资源
    最近更新 更多