:: GetLine - no echo, use for getting a passphrase
:: Usage: call GetLine.cmd
:: if not "%Line%"=="Secret password" goto :EOF
::
:: Returns: %Line%
:: echo's * for each character entered by user
:: can use <backspace> key
:: press Enter to finish input
@Echo Off
:HInput
::Version 3.0
SetLocal DisableDelayedExpansion
Set "Line="
Rem Save 0x08 character in BS variable
For /F %%# In (
'"Prompt;$H&For %%# in (1) Do Rem"'
) Do Set "BS=%%#"
:HILoop
Set "Key="
For /F "delims=" %%# In (
'Xcopy /L /W "%~f0" "%~f0" 2^>Nul'
) Do If Not Defined Key Set "Key=%%#"
Set "Key=%Key:~-1%"
SetLocal EnableDelayedExpansion
If Not Defined Key Goto :HIEnd
If %BS%==^%Key% (Set /P "=%BS% %BS%" <Nul
Set "Key="
If Defined Line Set "Line=!Line:~0,-1!"
) Else Set /P "=*" <Nul
If Not Defined Line (EndLocal &Set "Line=%Key%"
) Else For /F delims^=^ eol^= %%# In (
"!Line!") Do EndLocal &Set "Line=%%#%Key%"
Goto :HILoop
:HIEnd
echo.
endlocal& endlocal& set Line=%Line%