Batch file .bat文件中的可滚动列表

Batch file .bat文件中的可滚动列表,batch-file,Batch File,是否可以在批处理文件中使用箭头键创建可滚动列表?在选择一个后,它可以做如下操作:(转到结果1)等吗?如果不可能,我只需要用户自己输入答案。如果您需要文件名,这很容易。对于其他列表,在纯批处理中是相当困难的 echo select file with [TAB] set /p "file=Select file name: " echo you selected %file% 如果按选项卡,将切换目录中的所有文件 您还可以指定前两个或三个字符,然后使用选项卡 甚至可以给出*.txt,然后切换当前

是否可以在批处理文件中使用箭头键创建可滚动列表?在选择一个后,它可以做如下操作:(转到结果1)等吗?如果不可能,我只需要用户自己输入答案。

如果您需要文件名,这很容易。对于其他列表,在纯批处理中是相当困难的

echo select file with [TAB]
set /p "file=Select file name: "
echo you selected %file%
如果按
选项卡
,将切换目录中的所有文件

您还可以指定前两个或三个字符,然后使用
选项卡


甚至可以给出
*.txt
,然后切换当前目录中的所有
.txt
文件。

如果需要文件名,这非常简单。对于其他列表,在纯批处理中是相当困难的

echo select file with [TAB]
set /p "file=Select file name: "
echo you selected %file%
如果按
选项卡
,将切换目录中的所有文件

您还可以指定前两个或三个字符,然后使用
选项卡


甚至可以给出
*.txt
,然后切换当前目录中的所有
.txt
文件。

下面的批处理文件使用了一个有趣的技巧,即用列表元素填充DOSKEY历史。之后,一个F7键被发送到键盘,因此当执行SET/P命令时,先前的元素显示在DOSKEY管理的可滚动列表(菜单选择)中

@if (@CodeSection == @Batch) @then


@echo off
setlocal EnableDelayedExpansion

rem Multi-line menu with options selection via DOSKEY
rem Antonio Perez Ayala

rem Define the options
set numOpts=0
for %%a in (First Second Third Fourth Fifth) do (
   set /A numOpts+=1
   set "option[!numOpts!]=%%a Option"
)
set /A numOpts+=1
set "option[!numOpts!]=exit"

rem Clear previous doskey history
doskey /REINSTALL
rem Fill doskey history with menu options
cscript //nologo /E:JScript "%~F0" EnterOpts
for /L %%i in (1,1,%numOpts%) do set /P "var="

:nextOpt
cls
echo MULTI-LINE MENU WITH OPTIONS SELECTION
echo/
rem Send a F7 key to open the selection menu
cscript //nologo /E:JScript "%~F0"
set /P "var=Select the desired option: "
echo/
if "%var%" equ "exit" goto :EOF
echo Option selected: "%var%"
pause
goto nextOpt


@end

var wshShell = WScript.CreateObject("WScript.Shell"),
    envVar = wshShell.Environment("Process"),
    numOpts = parseInt(envVar("numOpts"));

if ( WScript.Arguments.Length ) {
   // Enter menu options
   for ( var i=1; i <= numOpts; i++ ) {
      wshShell.SendKeys(envVar("option["+i+"]")+"{ENTER}");
   }
} else {
   // Enter a F7 to open the menu
   wshShell.SendKeys("{F7}");
}
@如果(@code节==@Batch)@那么
@回音
setlocal EnableDelayedExpansion
rem多行菜单,通过DOSKEY选择选项
雷姆·安东尼奥·佩雷斯·阿亚拉
rem定义选项
设置numOpts=0
对于%%a in(第1秒第3秒第4秒第5秒)执行以下操作(
设置/A数值+=1
设置“选项[!numOpts!]=%%a选项”
)
设置/A数值+=1
设置“选项[!numOpts!]=exit”
rem清除以前的doskey历史记录
doskey/重新安装
rem使用菜单选项填充doskey历史记录
cscript//nologo/E:JScript“%~F0”EnterOpts
对于(1,1,%numOpts%)中的/L%%i,设置/P“var=”
:nextOpt
cls
带有选项选择的回音多行菜单
回音/
rem发送F7键以打开选择菜单
cscript//nologo/E:JScript“%~F0”
set/P“var=选择所需选项:”
回音/
如果“%var%”eq“exit”转到:EOF
已选择回显选项:“%var%”
暂停
后藤下托普
@结束
var wshShell=WScript.CreateObject(“WScript.Shell”),
envVar=wshShell.Environment(“进程”),
numOpts=parseInt(envVar(“numOpts”);
if(WScript.Arguments.Length){
//输入菜单选项

对于(var i=1;i,下面的批处理文件使用了一个有趣的技巧,其中包括用列表中的元素填充DOSKEY历史。之后,一个F7键被发送到键盘,因此当执行SET/p命令时,先前的元素显示在DOSKEY管理的可滚动列表(菜单选择)中

@if (@CodeSection == @Batch) @then


@echo off
setlocal EnableDelayedExpansion

rem Multi-line menu with options selection via DOSKEY
rem Antonio Perez Ayala

rem Define the options
set numOpts=0
for %%a in (First Second Third Fourth Fifth) do (
   set /A numOpts+=1
   set "option[!numOpts!]=%%a Option"
)
set /A numOpts+=1
set "option[!numOpts!]=exit"

rem Clear previous doskey history
doskey /REINSTALL
rem Fill doskey history with menu options
cscript //nologo /E:JScript "%~F0" EnterOpts
for /L %%i in (1,1,%numOpts%) do set /P "var="

:nextOpt
cls
echo MULTI-LINE MENU WITH OPTIONS SELECTION
echo/
rem Send a F7 key to open the selection menu
cscript //nologo /E:JScript "%~F0"
set /P "var=Select the desired option: "
echo/
if "%var%" equ "exit" goto :EOF
echo Option selected: "%var%"
pause
goto nextOpt


@end

var wshShell = WScript.CreateObject("WScript.Shell"),
    envVar = wshShell.Environment("Process"),
    numOpts = parseInt(envVar("numOpts"));

if ( WScript.Arguments.Length ) {
   // Enter menu options
   for ( var i=1; i <= numOpts; i++ ) {
      wshShell.SendKeys(envVar("option["+i+"]")+"{ENTER}");
   }
} else {
   // Enter a F7 to open the menu
   wshShell.SendKeys("{F7}");
}
@如果(@code节==@Batch)@那么
@回音
setlocal EnableDelayedExpansion
rem多行菜单,通过DOSKEY选择选项
雷姆·安东尼奥·佩雷斯·阿亚拉
rem定义选项
设置numOpts=0
对于%%a in(第1秒第3秒第4秒第5秒)执行以下操作(
设置/A数值+=1
设置“选项[!numOpts!]=%%a选项”
)
设置/A数值+=1
设置“选项[!numOpts!]=exit”
rem清除以前的doskey历史记录
doskey/重新安装
rem使用菜单选项填充doskey历史记录
cscript//nologo/E:JScript“%~F0”EnterOpts
对于(1,1,%numOpts%)中的/L%%i,设置/P“var=”
:nextOpt
cls
带有选项选择的回音多行菜单
回音/
rem发送F7键以打开选择菜单
cscript//nologo/E:JScript“%~F0”
set/P“var=选择所需选项:”
回音/
如果“%var%”eq“exit”转到:EOF
已选择回显选项:“%var%”
暂停
后藤下托普
@结束
var wshShell=WScript.CreateObject(“WScript.Shell”),
envVar=wshShell.Environment(“进程”),
numOpts=parseInt(envVar(“numOpts”);
if(WScript.Arguments.Length){
//输入菜单选项

对于(var i=1;我想要一个包含我键入内容的列表,他们可以使用箭头键滚动列表中的项目,然后按enter键执行特殊命令,如goto oitput1等。箭头键通常保留用于“doskey”esk历史浏览。从选项列表中进行选择是可行的。如果超过一页,则会变得混乱。我想要一个包含我键入的内容的列表,他们可以使用箭头键滚动列表中的项目,然后按enter键执行特殊命令,如goto oitput1等。箭头键通常用于“doskey”esk历史浏览。从选项列表中选择是可行的。如果超过一页,则会变得混乱。谢谢!这太棒了:D谢谢!这太棒了:D