使用DOS命令实现选择菜单
2011-06-10 07:13
246 查看
为了方便大家使用一个脚本,决定将用户输入变成一个命令行式的菜单,这样用户直接选择即可。
原理比较简单,将指定目录下的所有子目录都列举出来,并编号。指示用户输入,如果用户输入为N,就跳过前面N行,读取一行数据。
就得到了我们想要的子目录名。
代码摘录如下:
PRODUCT_LIST为事先指定的需要列举的目录名。
在for循环中不停变化的变量在FOR循环中输出时需要做特殊处理,此段代码中为:@ cmd /V:ON/C echo !COUNT!: %%x
即cmd /V:ON /C,打开延缓环境变量扩展。同时取变量值时需要用!将变量括起来,而不是%
dirlist.txt是存放子目录列表的文件,也可以用一条指令:'dir /aD /on /b %PRODUCT_LIST%'来代替,但使用后者时skip指定行数时有错误。
假设skip 4行,实际跳过了8行。
@echo off
@cls
dir /aD /on /b %PRODUCT_LIST% >dirlist.txt
set /a COUNT=0
@for /f %%x in ( dirlist.txt ) do (
@ cmd /V:ON/C echo !COUNT!: %%x
@ set /a COUNT=COUNT+1
)
@ECHO 请输入产品名称,如M28,不输入则会遍历所有产品
@if "%PRODUCT_NAME%"=="" set /P PRODUCT_NAME=Please input Product name:
REM 如果用户没有选择,就遍历所有产品
@if "%PRODUCT_NAME%"=="" goto :ProductNameOK
set SELECT_NUM=%PRODUCT_NAME%
for /f "skip=%SELECT_NUM%" %%x in (dirlist.txt) do (
call :ProductNameSelected %%x
@REM I don't know how to break the FOR sentence, just use goto :eof to do this.
goto :eof
)
echo Your input is error
goto :SelectProductName
REM this is a funtion.
:ProductNameSelected
set PRODUCT_NAME=%1
echo You selected: "%PRODUCT_NAME%"
del /q dirlist.txt
goto :ProductNameOK;
:ProductNameOK
原理比较简单,将指定目录下的所有子目录都列举出来,并编号。指示用户输入,如果用户输入为N,就跳过前面N行,读取一行数据。
就得到了我们想要的子目录名。
代码摘录如下:
PRODUCT_LIST为事先指定的需要列举的目录名。
在for循环中不停变化的变量在FOR循环中输出时需要做特殊处理,此段代码中为:@ cmd /V:ON/C echo !COUNT!: %%x
即cmd /V:ON /C,打开延缓环境变量扩展。同时取变量值时需要用!将变量括起来,而不是%
dirlist.txt是存放子目录列表的文件,也可以用一条指令:'dir /aD /on /b %PRODUCT_LIST%'来代替,但使用后者时skip指定行数时有错误。
假设skip 4行,实际跳过了8行。
@echo off
@cls
dir /aD /on /b %PRODUCT_LIST% >dirlist.txt
set /a COUNT=0
@for /f %%x in ( dirlist.txt ) do (
@ cmd /V:ON/C echo !COUNT!: %%x
@ set /a COUNT=COUNT+1
)
@ECHO 请输入产品名称,如M28,不输入则会遍历所有产品
@if "%PRODUCT_NAME%"=="" set /P PRODUCT_NAME=Please input Product name:
REM 如果用户没有选择,就遍历所有产品
@if "%PRODUCT_NAME%"=="" goto :ProductNameOK
set SELECT_NUM=%PRODUCT_NAME%
for /f "skip=%SELECT_NUM%" %%x in (dirlist.txt) do (
call :ProductNameSelected %%x
@REM I don't know how to break the FOR sentence, just use goto :eof to do this.
goto :eof
)
echo Your input is error
goto :SelectProductName
REM this is a funtion.
:ProductNameSelected
set PRODUCT_NAME=%1
echo You selected: "%PRODUCT_NAME%"
del /q dirlist.txt
goto :ProductNameOK;
:ProductNameOK
相关文章推荐
- android开发之&使用ViewPager加gridView实现菜单按钮分页滑动(类似QQ表情选择翻页效果)
- 使用Ext Js3.2实现的具有选择框的菜单,使用Ext.menu.Menu来实现
- Angalarjs之上拉菜单(ActionSheet)实现使用拍照和选择图库的方式上传头像功能
- Android菜单的使用和实现
- 使用Bottom Sheet实现底部菜单
- iOS之UI--使用SWRevealViewController实现侧边菜单功能详解实例
- html使用ul li 标签实现多级横向菜单
- 【微信Java开发 --1---番外1】在windows下,使用JAVA执行多条DOS命令+文件夹/路径中有空格怎么解决【目的是实现内容穿透外网】
- 使用DrawerLayout+Toolbar实现侧滑菜单
- Sharepoint2013 webpart 使用Jquery+json数据实现的菜单。
- Swift - 使用SWRevealViewController实现侧滑菜单
- [AndroidUI]使用DrawerLayout实现侧滑菜单
- 通过VS中的数据源选择对话框实现数据库连接配置(用户使用)
- 我创建了一个托盘图标,可以正常使用,点击右键打开菜单。问题是如果点击右键后不选择其中一个菜单项进行操作的话,它就总不消失。
- 右键菜单的“打开方式―选择程序”功能不能使用
- 怎样实现二级联动菜单即可选择又可输入???
- dwr + jsp 实现连接数据库的三级级联下拉选择菜单
- [Silverlight]简单实现DataGrid使用CheckBox选择行
- 使用tableview的表头button 实现多 cell 的选择
- 使用MFC的CFileDialog实现选择多个文件