gpt4 book ai didi

batch-file - 我可以屏蔽 bat 文件中的输入文本吗?

转载 作者:行者123 更新时间:2023-12-03 04:54:48 26 4
gpt4 key购买 nike

我正在编写一个批处理文件来执行一些其他程序。在这种情况下,我需要提示输入密码。我有什么方法可以屏蔽输入文本吗?我不需要打印********字符而不是输入字符。 Linux 的密码提示行为(键入时不打印任何内容)就足够了。

@echo off
SET /P variable=Password :
echo %variable%
Pause

这将读取输入,但我无法使用这种方法屏蔽文本。

最佳答案

是的 - 我迟到了 4 年。

但是我找到了一种方法可以在一行中完成此操作,而无需创建外部脚本;通过从批处理文件调用 powershell 命令。

感谢 TesselttingHeckler - 无需输出到文本文件(我在变量中设置了 powershell 命令,因为它在 for 循环内的一长行中非常困惑)。

@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%

最初我编写它是为了输出到文本文件,然后从该文本文件中读取。但上面的方法比较好。一行极其长、几乎难以理解的行:

@echo off
powershell -Command $pword = read-host "Enter password" -AsSecureString ; $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > .tmp.txt & set /p password=<.tmp.txt & del .tmp.txt
echo %password%

我将把它分解 - 你可以使用脱字符号 ^ 将其分成几行,这样更好......

@echo off
powershell -Command $pword = read-host "Enter password" -AsSecureString ; ^
$BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword) ; ^
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR) > .tmp.txt
set /p password=<.tmp.txt & del .tmp.txt
echo %password%

This article解释 powershell 命令的作用;本质上,它使用 Read-Host -AsSecureString 获取输入 - 以下两行将该安全字符串转换回纯文本,然后使用 > 将输出(纯文本密码)发送到文本文件。 tmp.txt。然后将该文件读入变量并删除。

关于batch-file - 我可以屏蔽 bat 文件中的输入文本吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/664957/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com