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

时间:2019-02-13 09:58:49

标签: windows batch-file command-prompt

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

    set default=ABCD
    set /p UserInputPath=%default%
    echo %UserInputPath%

3 个答案:

答案 0 :(得分:1)

根据您对问题的修改。您想使用%~dp0检测批处理文件的驱动器和路径,然后将路径回显到提示符并将其设置为默认值,除非用户键入其他内容,否则它将始终使用批处理的默认路径是从。可以以script value或仅在提示用户的地方以script的身份运行:

@echo off
set "UserInputPath=%1"
set "default=%~dp0"
if "%UserInputPath%"=="" set /p "UserInputPath=Enter Path (Default "%default%"): " || set "UserInputPath=%default%"
echo "%UserInputPath%"
pause

答案 1 :(得分:1)

set UserInputPath=ABCD替换第一行,因此,当用户只用 ENTER 确认提示时,先前的变量值就不会被覆盖,因此ABCD是将被呼应:

set "UserInputPath=ABCD"
set /P UserInputPath="Prompt text: "
echo(%UserInputPath%

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

if ErrorLevel 1 echo The user just pressed {Enter}.

N。 B .:
如果您要在提示中预先填充ABCD,则需要使用一些能够向该提示发送击键的外部软件...

答案 2 :(得分:0)

您要求输入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%