Bash 脚本:
#! /bin/bash
read -n 2 -p '2 digit:' ans;
echo $ans
当我输入完两个字符时,脚本继续运行,而不等待我按下enter
。
我按下的内容将保存到变量$ans
。例如,
如果我按下,则值为。A2
$ans
A2
powershell 或 cmd 是否具有上述 bash 之类的功能?无需按 Enter
即可获得 a (来自/ / / 或其他)。 据我所知,仅限于 1 个字符。同时,(PowerShell) 或(cmd) 需要按 Enter。 或者可能还有其他我还不知道的功能。two character variable
Choice
Read-Host
set /p
choice
Read-Host
set /p
答案1
使用批处理,您可能只要求输入一个字符串,然后将其截断为两个字符。用户需要按 Enter 键才能完成输入字符串。
我假设您希望脚本在输入两个字符后自动继续,而无需按 Enter。
使用 PowerShell 即可实现 Console.ReadKey 方法。
您的代码可能看起来像:
$InputChar1 = [console]::ReadKey()
$InputChar2 = [console]::ReadKey()
答案2
作为文档我所做的。也许对那些需要它的人有用。
choice
仅限一个字符,并且Read-Host
或者set /p
需要按 Enter 键。
因此,如果有许多选项不能使用默认选项并且不喜欢按 Enter 键,此脚本非常有用。
如果有很多菜单选项,那么另一种方法是使用two-character
选项,无论是在 cmd 还是 powershell 中。
感谢所有通过回答或评论提供帮助的人。
-命令
@echo off
:choice2
CLS
set KEYS=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
set K3YS= %KEYS%
choice /n /c %K3YS% /m "Choose: "
call set KEY1=%%K3YS:~%errorlevel%,1%%
CLS
choice /n /c %K3YS% /m "Choose: "
call set KEY2=%%K3YS:~%errorlevel%,1%%
CLS
set KEY=%KEY1%%KEY2%
echo Your Choice '%KEY%'
pause
goto :choice2
- 电源外壳
function choice2 {
CLS
$KEYS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
choice /n /c $KEYS /m 'Choose: '
$KEY1 = $KEYS[($LastExitCode -1)]
CLS
choice /n /c $KEYS /m 'Choose: '
$KEY2 = $KEYS[($LastExitCode -1)]
CLS
$KEY = -join @($KEY1; $KEY2)
"Your Choice `'$($KEY)`'"
pause
choice2
}
choice2
使用[console]::ReadKey()
更简单
function read {
CLS
write-host 'Choose:' -nonewline
$KEY = -join $(@([console]::ReadKey();[console]::ReadKey()) | Foreach KeyChar)
CLS
"Your Choice `'$($KEY)`'"
pause
read
}
read