AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1718940
Accepted
Clamarc
Clamarc
Asked: 2022-05-02 13:10:59 +0800 CST2022-05-02 13:10:59 +0800 CST 2022-05-02 13:10:59 +0800 CST

如何清除 echo 命令发送的消息

  • 772

当输入的值错误时,我的批处理会通知用户,并提供两个选项:重新输入值或退出程序。

@echo off
cls
setlocal enabledelayedexpansion

set /p _Value=Enter the value:
for /f skip^=4 %%e in ('echo;prompt $E^|cmd')do set "_$E=%%e"

if "!_Value!" gtr "10" (
 echo %_$E%[31mInvalid value! Do you want to re-enter the value? (y=yes/n=exit) %_$E%[0m
 IF /i "!r!"=="y" goto RELOADSAMESCREEN 
 goto :eof
)

The only way I managed to make the message disappear when the retype option is chosen, was to reload the same screen because when the screen is reloaded, the CLS command clears the screen with the message and then loads the screen again, so the message disappears从屏幕上,用户可以重新输入值而不会出现错误消息。

如何清除 echo 命令发送的消息而无需重新加载同一屏幕?

已编辑:根据@iTwasnTme
答案更改了脚本,它好多了,但是输入字段在屏幕上不断重复,颜色不会变回白色。

修改后的脚本:

@echo off

setlocal enabledelayedexpansion
for /f skip^=4 %%e in ('echo;prompt $E^|cmd')do set "_$E=%%e"

:RELOADSAMESCREEN
color & echo\& set /p "_Value=Enter the value: "

if !_Value! gtr 10 =;(
     set /p "r=!_$E![31mInvalid value^!! Do you want to re-enter the value? [y=yes |or| n=exit] "
     if /i "!r!"=="y" (set /p "'=!_$E![1F!_$E![0J!_$E![1F" <nul & goto RELOADSAMESCREEN)
     color & set /p "'=!_$E![1F" <nul & endlocal & goto :eof
    );=

屏幕: 在此处输入图像描述

windows-10 batch-file
  • 1 1 个回答
  • 198 Views

1 个回答

  • Voted
  1. Best Answer
    Io-oI
    2022-05-08T08:03:52+08:002022-05-08T08:03:52+08:00

    试试这个LotPings 对与你的问题非常相似的答案的改编

    @echo off
    
    setlocal enabledelayedexpansion
    for /f skip^=4 %%e in ('echo;prompt $E^|cmd.exe')do set "_$E=%%~e"
    
    %:^(
    set /p "_Value=!_$E![37;1mEnter the value:!_$E![0m "
    
    if !_Value! gtr 10 =;(
         set /p "r=!_$E![7;31mInvalid value^! Do you want to re-enter the value? [y=yes/n=exit]!_$E![0m "
         if /i "!r!" == "y" <nul set /p "'=!_$E![1F!_$E![0J!_$E![1F!_$E![0J!_$E![37;1m" & goto %:^(
         color & set /p "'=!_$E![0m "<nul & endlocal & goto :eof
        );=
    

    在此处输入图像描述


    • 请参阅使用当前发布答案的菜单的代码改编(第 1-40 行)。
    @goto %:^/
            ___  _____
          .'/,-Y"     "~-.    
          l.Y             ^.    Script: Manutenção
          /\               _\_     Author: Leticia
         i            ___/"   "\     Create: 26/04/20
         |          /"   "\   o |    Update: 26/06/20
         l         ]     o |__./     XGHv01: 25/05/21
          \ _  _    \.___./    "~\
           X \/ \            ___./
          ( \ ___.   _..--~~"   ~`-.
           ` Z,--   /               \
             \__.  (   /       ______)
               \   l  /-----~~" /      -Row
                Y   \          /
                |    "x______.^
                |           \
                j            Y
         ------------------------------------------------------
         | Menu Principal           // eXtreme Go Horse v.01 d;)
         ------------------------------------------------------
          1 - Limpar Cache
          2 - Limpar Disco
          3 - Escanear Sistema
          4 - Corrigir Sistema Windows >=8
          5 - Verificar Estado do(s) HD(s)
          6 - Reparar Cache Icones/Thumbs.db
          7 - Limpar Fila/Spool de Impressão
          8 - Renovar DHCP/IP e Limpar Cache DNS
          9 - Remover Arquivos Tempórarios/Updates
          0 - Sair
    
    %:^/
    @echo off
    title<nul & title .\%~nx0 & setlocal EnableDelayedExpansion & %ComSpec% /c color 06
    %__AppDir__%chcp.com 65001>nul && %ComSpec% /ccolor 06 & %__AppDir__%mode.com 72,37
    for /f usebackq^delims^=^  %%t in =;(`%__AppDir__%robocopy.exe /L .\. .\. /njh /njs
      =;`)do for /f usebackskip^=4 %%b in (`echo\prompt;$h^|%ComSpec%  =;`)do call && ^
    for /f tokens^=*useback %%i in (`^<con: findstr /b "%%t.%%b" ^<"%~f0"`)do echo;%%~i
    
    rem./ & cd. & for /f skip^=4 %%e in ('echo;prompt $E ^| cmd.exe ')do set "_$E=%%~e"
    %__AppDir__%timeout.exe 02 >nul | echo\
    
    %:^(
    color & set /p "_Value=Enter the value: "
    
    if !_Value! gtr 10 =;(
         set /p "r=!_$E![7;31mInvalid value^! Do you want to re-enter the value? [y=yes/n=exit]!_$E![0m "
         if /i "!r!" == "y" <nul set /p "'=!_$E![1F!_$E![0J!_$E![1F!_$E![0J" & goto %:^(
         set /p "'=!_$E![1F" <nul & endlocal & goto :eof
        );=
    
    • 所以你可以看到Tab,Backspaces和CRLF在代码中的位置:

    在此处输入图像描述


    • 输出结果与菜单:

    在此处输入图像描述



    其他资源:

    • Dir /?
    • Del /?
    • Echo /?
    • Set /?
    • For /?
    • For /F /?
      • For /F commands
    • For /L /?
    • 条件执行
      • ||和&&
    • 命令重定向
      • |, <, >,2>等
    • Local Environment | Function
      • Setlocal&Endlocal
    • 变量和子串操作
    • If Condition() Else If Condition() Else()
    • Windows 命令解释器 [ cmd.exe] 如何解析脚本
    • 2

相关问题

  • VMware Workstation USB 仲裁服务无法自动启动

  • 如何在域和 Linux 活动目录中启用指纹传感器

  • 资源管理器侧面板中的桌面外壳快捷方式

  • 为什么我不能将文件从 Android 发送到 Windows 10?

  • 在多个文件上打开方式?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve