windows - 在脚本 .bat 中阻止字符输入
问题描述
我有下面的脚本,只想输入数字,但如果用户输入特殊字符,系统不会进行正确处理(例如:“,@,!)
关于如何仅阻止和接受数字的任何想法?
@echo off
cls
:menu
cls
color 80
date /t
time /t
echo.
echo Computador: %computername% Usuario logado: %username%
echo.
echo IMPORTANTE: EXECUTAR ESSE SCRIPT SOMENTE NESTE SERVIDOR
echo.
echo ==================================
echo * 1. TROCAR SENHAS DOS SERVERS *
echo * 2. DETALHES SOBRE O HARDWARE *
echo * 3. DETALHES SOBRE OS DISCOS *
echo * 4. SAIR *
echo ==================================
echo.
set /p opcao= ESCOLHA UMA DAS OPCOES:
echo ------------------------------
echo ------------------------------
if %opcao% equ 1 goto opcao1
if %opcao% equ 2 goto opcao2
if %opcao% equ 3 goto opcao3
if %opcao% equ 4 goto opcao4
if %opcao% GEQ 5 goto opcao5
解决方案
根据我的评论,您应该使用Choice
命令而不是Set /P
:
@Echo Off
:Menu
ClS
Color 80
Date /T
Time /T
Echo(
Echo Computador: %ComputerName% Usuario logado: %UserName%
Echo(
Echo IMPORTANTE: EXECUTAR ESSE SCRIPT SOMENTE NESTE SERVIDOR
Echo(
Echo ==================================
Echo * 1. TROCAR SENHAS DOS SERVERS *
Echo * 2. DETALHES SOBRE O HARDWARE *
Echo * 3. DETALHES SOBRE OS DISCOS *
Echo * 4. SAIR *
Echo ==================================
Echo(
"%__AppDir__%choice.exe" /C 1234 /N /M "ESCOLHA UMA DAS OPCOES:"
GoTo opcao%ErrorLevel% 2>NUL||GoTo opcao5
或者,启用延迟扩展后,您可以继续使用并使用匹配Set /P
检查输入:Findstr.exe
@Echo Off
SetLocal EnableDelayedExpansion
:Menu
ClS
Color 80
Date /T
Time /T
Echo(
Echo Computador: %ComputerName% Usuario logado: %UserName%
Echo(
Echo IMPORTANTE: EXECUTAR ESSE SCRIPT SOMENTE NESTE SERVIDOR
Echo(
Echo ==================================
Echo * 1. TROCAR SENHAS DOS SERVERS *
Echo * 2. DETALHES SOBRE O HARDWARE *
Echo * 3. DETALHES SOBRE OS DISCOS *
Echo * 4. SAIR *
Echo ==================================
Echo(
Set /P "opcao= ESCOLHA UMA DAS OPCOES: "
Echo "!opcao:~1!"|"%__AppDir__%findstr.exe" "^\"[1-4]\"$">NUL&&(
GoTo opcao!opcao:~1!)||GoTo opcao5
推荐阅读
- comments - 重置评论数
- javascript - 使用 youtube 等灰色条预加载内容
- html - 如何将按钮连接到 ruby on rails 上的数据库?
- material-design - Flutter 中的 Material Design 维度
- spss-modeler - SPSS Cloud 无法打开/创建临时文件
- c++ - 将 int32 重新解释为浮动
- python - sampled_softmax_loss 如何从 softmax 嵌入矩阵中知道要使用哪个嵌入?
- python - 合并数据框
- typescript - 如何在离子列表中添加广告横幅
- circleci - CircleCi 2.0 在子目录中使用项目