代码之家  ›  专栏  ›  技术社区  ›  fightstarr20

批处理文件-选择,缩进提示

  •  1
  • fightstarr20  · 技术社区  · 6 年前

    我在批处理文件中使用choice来显示这样的提示。

    :choice
    set /P "c= Is this Correct? (Y/N)"
    if /I "%c%" EQU "Y" goto :movespot
    if /I "%c%" EQU "N" goto :exitspot
    goto :choice
    

    它工作正常,但它忽略了“这是正确的吗?”(是/否)“我正试图用它来缩进回声。

    我还有别的办法吗?

    2 回复  |  直到 6 年前
        1
  •  3
  •   Squashman Stephan    6 年前

    下面是在 SET /P 输出。

    @echo off
    for /f %%a in ('"prompt $H&for %%b in (1) do rem"') do set "BS=%%a"
    
    set /P "c=X%BS%          Is there 10 spaces before? (Y/N)"
    
        2
  •  2
  •   aschipfl    6 年前

    对于这种是/否选择,我建议使用 choice command ,因为它不接受除 Y / N (除了 Ctrl键 + C类 Ctrl键 + 中断 ,但您可以中止 set /P 和他们一起)。

    尽管如此, 选择 ,删除前导空格,就像 套/件 ;它甚至删除了后面的那些。尽管 backspace-( ← -)trick 演示者 Squashman 在这里也适用于双方:

    for /F %%C in ('prompt $H ^& for %%# in ^(.^) do rem/') do set "BS=%%C"
    set /P C="_%BS% Is there a leading space and a (kept) trailing space? "
    choice /M "_%BS% Is there a leading and two trailing spaces? _%BS%" /N
    

    请注意 选择 总是附加一个 空间 如果指定了任何提示文本( /M )中。所以前面提到的两个尾随空格中的一个是附加的。默认情况下, 选择 追加选项列表( [Y,N] )那么,除非 /N 是的。