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