Благодаря разумному использованию другого инструмента, свободно доступного в Windows, следующие два скрипта выполняют ту работу, которую вы хотите.
Сначала GetPwd.cmd:
@echo off
:: GetPwd.cmd - Get password with no echo.
<nul: set /p passwd=Password:
for /f "delims=" %%i in ('cscript /nologo GetPwd.vbs') do set passwd=%%i
echo.
:: This bit's just to prove we have the password.
echo %passwd%
Затем GetPwd.vbs:
' GetPwd.vbs - Get password with no echo then echo it. '
Set oScriptPW = CreateObject("ScriptPW.Password")
strPassword = oScriptPW.GetPassword()
Wscript.StdOut.WriteLine strPassword
Пояснение:
GetPwd.vbs просто использует объект пароля для ввода пароля от пользователя и затем выводит его на стандартный вывод (следующий абзац объяснит, почему это не отображается в терминале).
GetPwd.cmd немного сложнее (но обычно это командные сценарии).
Команда "<nul: set /p passwd=Password: "
просто выводит подсказку без конечного CR / LF - это хитрый способ эмулировать команду bash "echo -n"
. Он устанавливает passwd
в пустую строку в качестве побочного эффекта и не ждет ввода, так как он получает свой ввод от nul: device.
Оператор "for /f "delims=" %%i in ('cscript /nologo GetPwd.vbs') do set passwd=%%i"
- самый хитрый бит. Он запускает vbscript без рекламы Microsoft (/nologo
), поэтому единственной строкой вывода является пароль (из vbscript "Wscript.StdOut.WriteLine strPassword"
.
Установка разделителей на ничто не требуется для захвата входных строк с пробелами, в противном случае вы просто получите первое слово. "for ... do set ..."
устанавливает passwd
как фактический пароль, выводимый из VBScript.
Затем мы выводим пустую строку (фактически заканчиваем строку "Password: "
) и выводим пароль, чтобы вы могли убедиться, что он работает:
C:\Pax> GetPwd
Password:
this is my password
C:\Pax>
scriptpw.dll доступен с XP и 2K3, но не обязательно с более поздними версиями.
Инструкции для Vista и предположительно Win7 приведены ниже, попробуйте:
Чтобы замаскировать пароль, скрипт использует COM-объект ScriptPW. ScriptPW загружается по умолчанию в Windows XP и Windows 2003. Если вы используете Windows 2000 или Windows Vista, вам нужно скопировать файл scriptpw.dll
из папки Windows\System32
системы XP или системы Windows 2003 в Папка Winnt\System32
или Windows\System32
в вашей системе Windows 2000 или Vista. После того, как DLL скопирована, вам нужно будет зарегистрировать ее, выполнив команду:
regsvr32 scriptpw.dll
Чтобы успешно зарегистрировать DLL на компьютере с Vista, вам нужно открыть командную строку от имени администратора. Для этого нажмите Пуск | Все программы | Аксессуары. Затем щелкните правой кнопкой мыши по ярлыку командной строки и выберите «Запуск от имени администратора». Как только вы перейдете в командную строку с правами администратора, вы сможете успешно выполнить команду regsvr32 scriptpw.dll
для регистрации библиотеки DLL.