You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

批处理(Batch)与Oracle:选择操作后不显示输入值的方法求助

解决批处理选择操作时隐藏输入值的问题

嘿,我看了你的批处理代码,问题出在set /p input=这一行——它会把你输入的数字直接回显在屏幕上,这正是你不想看到的。下面给你两种靠谱的解决办法:

方法1:用choice命令(强烈推荐)

choice是Windows批处理里专门为这种单键选择场景设计的命令,按下对应数字就直接触发操作,不用回车,而且默认不会显示输入的内容。修改后的代码如下:

@ECHO OFF
:start
echo Select Action:
echo 1 - Make Update
echo 2 - Revert Changes
:: 限定可选按键为1和2,不重复显示选项,自定义提示文本
choice /c 12 /n /m "请选择操作:"
:: choice的errorlevel是从高到低判断的,所以先判断2再判断1
If errorlevel 2 goto :choose2
If errorlevel 1 goto :choose1

:choose1
echo Selected Option 1
echo ENTER PASSWORD FOR USER:
SQLPLUS -S USER@SID @update.sql
goto end

:choose2
echo Selected Option 2
REM it's just example
SQLPLUS -S USER@PASSWORD\SID @reupdate.sql
goto end

:end
pause

这里给你拆解下choice的参数:

  • /c 12:指定只能按1或2这两个键
  • /n:不自动显示选项列表(因为你已经自己用echo打出选项了,避免重复)
  • /m "请选择操作:":显示自定义的提示文字,引导用户操作

这样用户按下1或2后,屏幕上只会看到你设置的提示,完全不会出现输入的数字,完美解决你的问题。

方法2:用set /p配合临时隐藏回显(不推荐,但供参考)

如果你非要坚持用set /p的话,可以通过临时生成一个关闭回显的小批处理来实现隐藏输入,不过步骤会繁琐一点:

@ECHO OFF
:start
echo Select Action:
echo 1 - Make Update
echo 2 - Revert Changes
:: 临时生成一个关闭回显的批处理来接收输入
echo @echo off > "%temp%\hideinput.bat"
echo set /p input= >> "%temp%\hideinput.bat"
cmd /q /c "%temp%\hideinput.bat"
del "%temp%\hideinput.bat"
If %input%==1 goto :choose1
If %input%==2 goto :choose2

:choose1
echo Selected Option 1
echo ENTER PASSWORD FOR USER:
SQLPLUS -S USER@SID @update.sql
goto end

:choose2
echo Selected Option 2
REM it's just example
SQLPLUS -S USER@PASSWORD\SID @reupdate.sql
goto end

:end
pause

不过这种方法不如choice稳定,比如可能会出现光标错位的情况,所以还是优先选第一种方案。

另外你提到还有两个问题没说完,我猜其中一个可能是密码输入的隐藏?毕竟你后面要输入SQL的密码,批处理本身没有原生隐藏密码输入的功能,不过可以借助PowerShell来实现,比如:

echo ENTER PASSWORD FOR USER:
for /f "delims=" %%p in ('powershell -Command "$p=Read-Host -AsSecureString; [System.Net.NetworkCredential]::new('',$p).Password"') do set "db_password=%%p"
:: 之后用%db_password%替换SQLPLUS命令里的密码部分
SQLPLUS -S USER/%db_password%@SID @update.sql

内容的提问来源于stack exchange,提问作者4est

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:10:03