【问题标题】:default value of Set /p in batch script批处理脚本中 Set /p 的默认值
【发布时间】:2018-02-07 02:39:07
【问题描述】:

有没有办法在 Windows 批处理脚本的 set /p 语句中显示默认值?

例如,像这样的:

set /p MyVar=My Default Value
echo $MyVar$

如果用户按下 Enter 而不输入任何其他内容,则 `MyVar 获取该默认值。

谢谢。

【问题讨论】:

  • 这个问题之前已经回答过好几次了,比如this,或者this,或者this,...
  • @Aacini 是的,可能是...有趣的是,我确实总是在任何搜索结果的顶部位置找到那些重复项。 :) 但是感谢您的第一个链接,我找到了我真正想要的东西,即不仅设置了默认值,而且还为用户预设了该默认值。

标签: windows batch-file set default


【解决方案1】:

这个:

SET /P "MyVar=" || SET "MyVar=My Default Value"

(Read more).


你也可以这样用:

SET /P "MyVar="
IF NOT DEFINED MyVar SET "MyVar=My Default Value"

【讨论】:

  • 您也可以预设该值,因为set 不会在用户按回车而不输入的情况下覆盖它,例如set "MyVar=Default Value" & set /p "MyVar=Enter value: ".
  • @eryksun 如果用户在不输入SET "MyVar=My Default Value" 的情况下按下回车键(在Windows 10 上测试)。
  • @eryksun 太晚了...修好了,谢谢。怎么会更可靠呢?
  • 如果用户输入带双引号的字符串,则可能存在引号不匹配的解析问题。
【解决方案2】:

这是一种方法。

如果定义了%1,它会将myvar设置为myvar,然后跳过提示并回显myvar,否则它将Default Value存储为默认值,但如果有人输入另一个值,它将覆盖默认值。不是你也可以使用%2%3等。

@echo off
set "myvar=%1"
if "%myvar%"=="" set /p "myvar=Enter Value: " || set "myvar=Default Value"
echo %myvar%

要查看结果,保存批处理并从cmdline 运行以下命令:

batchfile.cmd Default

这将跳过提示并回显:

默认

batchfile.cmd

这将提示Enter Value:,只需按回车键,然后会回显:

默认值

最后

batchfile.cmd

并输入一个值,该值将 lecho 输入的值。

【讨论】:

    【解决方案3】:

    上面提出的解决方案对我不起作用,或者它们的工作方式非常笨拙。

    这是我应用的问题的(一个明显的)简单解决方案:

    SET Docdir=D:\Documents\
    SET /p Docdir="Target directory (Press Enter to keep <%Docdir%>): "
    

    它会导致以下提示:

    Target directory (Press Enter to use <D:\Documents\>):
    

    然后用户查看默认值是什么,并可以使用Enter 键接受它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-15
      • 2017-08-04
      • 1970-01-01
      相关资源
      最近更新 更多