Windows 批处理 - 要求用户输入默认值

Epl*_*gam 8 windows batch-file command-prompt

在 Windows 批处理文件中,我想要求用户输入,我想向用户显示默认值,即 bat 文件所在的文件夹。因此,在运行批处理文件时,批处理会检查当前文件夹并为其设置默认变量,然后用户可以通过单击 Enter 或输入不同的值来接受建议的值。我尝试了这段代码,但它不起作用,UserInputPath 未设置。

    set default=ABCD
    set /p UserInputPath=%default%
    echo %UserInputPath%
Run Code Online (Sandbox Code Playgroud)

Ste*_*han 10

你要求的user can accept the suggested value by clicking on enter or enter a different value

利用 的行为set /p:如果输入为空(只是ENTER),则变量保持不变。所以你可以简单地设置一个默认值:

set "UserInputPath=ABCD"
set /p "UserInputPath=Enter path or just ENTER for default [%UserInputPath%] : "
echo %UserInputPath%
Run Code Online (Sandbox Code Playgroud)


asc*_*pfl 9

将第一行替换为set UserInputPath=ABCD,因此当用户只需用 确认提示时ENTER,前一个变量值不会被覆盖,因此ABCD将被回显:

set "UserInputPath=ABCD"
set /P UserInputPath="Prompt text: "
echo(%UserInputPath%
Run Code Online (Sandbox Code Playgroud)

如果您想知道用户是否输入了任何内容,请ErrorLevel随后查询该值:

if ErrorLevel 1 echo The user just pressed {Enter}.
Run Code Online (Sandbox Code Playgroud)

注意:
如果您希望提示符预先填充ABCD,那么您需要使用一些能够向该提示符发送击键的外部软件...