使用批处理文件屏蔽密码

问题描述

在当前情况下,运行批处理文件时,窗口提示输入密码;输入密码时,在窗口提示中可见字符。 我想屏蔽密码。

到目前为止,要输入密码,我的批处理文件中包含以下代码。

SET /p v_password=Enter user password:

我应该在此处嵌入什么代码来屏蔽密码。

解决方法

隐藏密码;您可以使用此question

中此处发布的powershell方法
@echo off
set "psCommand=powershell -C "$pword = read-host 'Enter Password' -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^
        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p
echo %password%
pause

下面是一个示例,向您展示如何将powershell命令用于批处理文件:

@echo off
Title %~n0
Mode 50,5 & Color 0E
:CreatePassword
cls & Color 0E
setlocal DisableDelayedExpansion
Call :InputPassword "Please choose your password" pass1
Call :InputPassword "Please confirm your password" pass2
setlocal EnableDelayedExpansion
If !pass1!==!pass2! ( Goto:Good ) Else ( Goto:Bad )
::***********************************
:InputPassword
Cls
echo(
set "psCommand=powershell -Command "$pword = read-host '%1' -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^
      [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
        for /f "usebackq delims=" %%p in (`%psCommand%`) do set %2=%%p
Goto :eof
::***********************************        
:Good
Color 0B                  
Cls
echo.
echo                     Good password
::TimeOut /T 2 /NoBreak>nul
echo Your password stored as : "!Pass2!" without quotes
pause>nul
Goto :Eof
::***********************************
:Bad
Color 0C
Cls
echo.
echo             Wrong password try again
::TimeOut /T 2 /NoBreak>nul
echo  Press any key to retry again
pause>nul
Goto :CreatePassword
::***********************************

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...