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

如何避免在Windows cmd批处理文件中提示变量值时出现额外的空格

  •  0
  • dom_beau  · 技术社区  · 6 年前

    当我想通过提示用户来读取值时,我在Windows批处理脚本中遇到了一个奇怪的行为。这是我的剧本:

    echo off
    
    set VALUE=toto
    set _VALUE=
    set /p _VALUE=Enter the value or leave blank to accept default (%VALUE%):
    
    if [%_VALUE%] NEQ [] ( set VALUE=%_VALUE% )
    
    set _VALUE=
    
    echo "%VALUE%"
    

    如果我保留默认值,我得到的结果如下:

    ...>myscript.cmd
    Enter the value or leave blank to accept default (toto):
    "toto"
    

    ...>myscript.cmd
    Enter the value or leave blank to accept default (toto): titi
    "titi "
    
    • 为什么后面有空白 titi "titi " ?

    • 简单的语法应该是什么 "titi"

    提前感谢您的帮助!

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

    要修复代码,可以将此作为最佳实践。

    @echo off
    
    set VALUE=toto
    set _VALUE=
    set /p _VALUE=Enter the value or leave blank to accept default (%VALUE%):
    
    if NOT "%_VALUE%"=="" set "VALUE=%_VALUE%"
    
    set _VALUE=
    
    echo "%VALUE%"
    

    但你真正需要做的就是这样。

    set "VALUE=toto"
    set /p VALUE=Enter the value or leave blank to accept default (%VALUE%):
    echo %value%