how to hide password in command line with **** and get the value into .bat file and .sh file [duplicate] how to hide password in command line with **** and get the value into .bat file and .sh file [duplicate] bash bash

how to hide password in command line with **** and get the value into .bat file and .sh file [duplicate]


By using powershell, we can achieve this in 32 as well as 64 bit.

 @ECHO OFF set "psCommand=powershell -Command "$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%

By using this we can get password with *** in command line

In bash script we can achieve this by using below code.

#!/bin/bashprompt="Enter Password:"while IFS= read -p "$prompt" -r -s -n 1 char doif [[ $char == $'\0' ]];     then    breakfiif [[ $char == $'\177' ]];  then    prompt=$'\b \b'    password="${password%?}"else    prompt='*'    password+="$char"fidoneecho " "echo "Done. Password=$password" 

The options of the read command are:-p : Prompt string.-r : Don't use backslash as escape character.-s : Silent mode, inputs are not echoed.-n 1 : Number of character to input.

read returns 0 unless \0 is encountered, and the character the user types is placed into the char variable.

The IFS= part clears the IFS variable, which ensures that any space or tab characters that you type are included in the password rather than being parsed out by read.


For bash its read -s.

-s Silent mode. If input is coming from a terminal, characters are not echoed.

For batch it seems to be more complicated.

Read about it here:Can I mask an input text in a bat file


Here is a solution for Windows 32 bit.

@echo offecho hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5>%temp%\ftp.comset /p password=What is your password? <nulfor /f "tokens=*" %%i in ('%temp%\ftp.com') do set "password=%%i"del %temp%\ftp.comecho password is "%password%"pause