批处理脚本中Set / p的默认值

Con*_* S. 2 windows default batch-file set

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

例如,如下所示:

Set /p MyVar=My Default Value
Echo $MyVar$
Run Code Online (Sandbox Code Playgroud)

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

谢谢。

Ger*_*ard 8

这是一种方法。

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

@echo off
set "myvar=%1"
if "%myvar%"=="" set /p "myvar=Enter Value: " || set "myvar=Default Value"
echo %myvar%
Run Code Online (Sandbox Code Playgroud)

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

batchfile.cmd Default
Run Code Online (Sandbox Code Playgroud)

这将跳过提示并仅回显:

默认

batchfile.cmd
Run Code Online (Sandbox Code Playgroud)

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

默认值

最后

batchfile.cmd
Run Code Online (Sandbox Code Playgroud)

并输入一个值,这将回显输入的值。


Fat*_*Hit 6

这个:

SET /P "MyVar=" || SET "MyVar=My Default Value"
Run Code Online (Sandbox Code Playgroud)

了解更多)。


您还可以使用以下命令:

SET /P "MyVar="
IF NOT DEFINED MyVar SET "MyVar=My Default Value"
Run Code Online (Sandbox Code Playgroud)

  • 您还可以预设该值,因为如果用户按Enter键而不输入,则`set`不会覆盖它,例如`set“ MyVar = Default Value”&set / p“ MyVar = Enter value:”`。 (3认同)

Oak*_*548 5

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

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

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

结果出现以下提示:

Target directory (Press Enter to use <D:\Documents\>):
Run Code Online (Sandbox Code Playgroud)

然后用户会看到默认值是什么,并可以使用Enter密钥接受它