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将获得该默认值。
谢谢。
这是一种方法。
它将设置%1为myvar已定义,然后跳过提示并回显,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)
并输入一个值,这将回显输入的值。
这个:
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)
        上面提出的解决方案对我不起作用,或者它们的工作方式非常笨拙。
这是我应用的问题的(明显的)简单解决方案:
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密钥接受它