如何提示用户提供答案,建议他们可以编辑的内容? 我知道怎么做q& a like:
1. The sky is:
用户提出答案并:
echo For you the sky is %var%
但我想要的是:
1. The sky is: Blue
echo For you the sky is Blue
但是用户可以改变它
1. The sky is: Green
echo For you the sky is Green
我不知道我是否清楚,如果没有,请告诉我。 感谢
答案 0 :(得分:1)
使用颜色初始化变量:
@echo off&setlocal
set "color=Blue"
set/p "color=For you the sky is %color% (hit enter for o.k. or type in other color): "
echo For you the sky is %color%
答案 1 :(得分:1)
您可以使用WScript.Shell的SendKeys method通过JScript或VBScript来模拟按键。试一试。我认为它可以满足您的需求。它将发送不可编辑的1. The sky is:
,然后模拟 B l u e 的用户击键。然后用户可以自由地点击 Enter ,或者他可以 Backspace 删除“Blue”并将其替换为他想要的任何内容。
使用.bat
扩展程序保存并运行它。
@if (@a==@b) @end /*
:: batch portion
@echo off
setlocal
set /p "=1. The sky is: "<NUL
call :sendkeys Blue
set /p "sky="
echo For you the sky is %sky%. Press any key to exit.
pause >NUL
exit /b
:sendkeys <string>
cscript /nologo /e:jscript "%~f0" "%~1"
goto :EOF
:: JScript portion */
var sh = new ActiveXObject("WScript.Shell");
sh.SendKeys(WSH.Arguments(0));
答案 2 :(得分:0)
set x=blue
set y=
set /p "y=The sky is [%x%] "
if not defined y set y=%x%
echo For your the sky is %y%
如果用户输入为空,则预定义的%x%将复制到输出变量%y%
答案 3 :(得分:0)
正如其他答案所说,您必须使用第三方实用程序来解决此问题。例如,我使用我的GetKey.exe和Show.exe辅助程序来编写ReadLine.bat,这是一个模拟SET /P
命令的子程序,也就是说,它读取字符直到按下Enter键并用BackSpace删除最后一个字符键。我们可以修改这样的例程,以便为输入变量提供初始值:
@echo off
rem Read a variable with an initialized value
rem Antonio Perez Ayala
set Bell=7
set BackSpace=8
set Enter=13
set Space=32
:ReadInitVar var="prompt" ["initial value"]
rem %1 %2 %3
setlocal EnableDelayedExpansion
Show %2
set len=0
if "%~3" equ "" (
set %1=
) else (
Show %3
set "%1=%~3"
for /L %%i in (0,1,80) do if "!%1:~%%i,1!" neq "" set /A len+=1
)
:nextKey
GetKey
set key=%errorlevel%
if %key% geq %Space% (
rem Ascii character: insert it
Show %key%
for /F "delims=" %%a in ('Show %key%') do set "%1=!%1!%%a"
set /A len+=1
) else if %key% equ %BackSpace% (
rem Backspace: delete last character
if defined %1 (
Show %BackSpace% %Space% %BackSpace%
set "%1=!%1:~0,-1!"
set /A len-=1
) else (
rem Empty value
Show %Bell%
)
)
if %key% neq %Enter% goto nextKey
echo/
for /F "delims=" %%a in ("!%1!") do endlocal & set %1=%%a
exit /B
这样,您可以使用此行来解决您的问题:
call :ReadInitVar color="For you the sky is " "Blue"
您可以从此站点下载Getkey.exe和Show.exe辅助程序,并查看原始的ReadLine.bat子例程:Advanced Batch features via auxiliary .exe programs。
还有另一个类似于上面的ReadInitVar.bat的子程序,但它通过使用ColorShow.exe辅助程序而不是Show.exe在不同颜色字段中显示用户输入。您可以在此处查看:http://www.dostips.com/forum/viewtopic.php?f=3&t=4198&p=23426#p23426