使用DOS命令实现选择菜单

为了方便大家使用一个脚本,决定将用户输入变成一个命令行式的菜单,这样用户直接选择即可。

原理比较简单,将指定目录下的所有子目录都列举出来,并编号。指示用户输入,如果用户输入为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

转载于:https://www.cnblogs.com/ceblog/archive/2011/06/10/2077214.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dos和windows最大的不同在于dos命令方式操作,所以使用者需要记住大量命令及其格式使用方法,dos命令分为内部命令和外部命令,内部命令是随每次启动的command.com装入并常驻内存,而外部命令是一条单独的可执行文件。在操作时要记住的是,内部命令在任何时候都可以使用,而外部命令需要保证命令文件在当前的目录中,或在autoexec.bat文件已经被加载了路径。   常用的内部命令   dos的内部命令是dos操作的基础,下面就来介绍一些常用的dos内部命令。   1、dir   含义:显示指定路径上所有文件或目录的信息   格式:dir [盘符:][路径][文件名] [参数]   参数:   /w:宽屏显示,一排显示5个文件名,而不会显示修改时间,文件大小等信息;   /p:分页显示,当屏幕无法将信息完全显示时,可使用其进行分页显示;   /a:显示具有特殊属性的文件;   /s:显示当前目录及其子目录rd下所有的文件。   举例:dir /p   将分屏显示当前目录下文件。在当前屏最后有一个“press any key to continue . . .”提示,表示按任意键继续。   2、cd   含义:进入指定目录   格式:cd [路径]   举例:cd dos   cd命令只能进入当前盘符中的目录,其中“cd\”为返回到根目录,“cd..”为返回到上一层目录。   3、md   含义:建立目录   格式:md [盘符][路径]   举例:md temp   表示在当前盘符下建立一个名为temp的目录。   4、rd   含义:删除目录   格式:rd [盘符][路径]   举例:rd temp   表示删除当前路径下的temp目录,需要注意的是,此命令只能删除空目录。   5、copy   含义:拷贝文件   格式:copy [源目录或文件] [目的目录或文件]   举例1:copy c:\*.com d:\",表示将c盘根目录下所有扩展名为com的文件拷贝到d盘根目录中。   举例2:copy c:\autoexec.bat c:\autoexec.bak   表示将autoexec.bat文件复制成为扩展名为bak的文件。输入dir命令,可以发现此变化。   6、del   含义:删除文件   格式:del [盘符][路径][文件名] [参数]   举例:del c:\ *.bak /p   表示删除当前目录下所有扩展名为bak的文件,参数/p表示可以使用户在删除多个文件时对每个文件都显示删除询问。   7、sys   含义:传递系统文件命令。   格式:sys [源盘符][目的盘符]   举例:sys c: a:   此命令将为a盘传送系统,传送成功后,a盘将成为系统启动盘。   常用的外部命令   dos的外部命令就是一些应用程序,这些外部命令都是以文件的形式存在,windows系统的dos外部命令保存在windows主目录下的command目录中。下面来介绍几个常用的dos外部命令。   1、edit   含义:简单的编辑软件,可以用它来编辑一些程序和批处理文件。   格式:edit [盘符][文件名]   举例:edit c:\autoexec.bat   输入此命令后将打开编辑器。在编辑状态下输入文件内容后,按alt+f键激活file菜单,按向下的箭头选择退出(exit),提示是否要保存刚才输入的内容,如果要保存,只需输入y或者直接回车即可。   2、format   含义:格式化命令,可以完成对软盘和硬盘的格式化操作。   格式:format [盘符] [参数]   举例:format a: /s/q   此命令将格式化a盘,其中参数/q表示进行快速格式化,/s表示完成格式化后将系统引导文件拷贝到该磁盘,这样软件就可以作为dos系统启动盘了。格式化过程中,屏幕上会显示已经完成的百分比。格式化完成后,会提示为磁盘起一个名字,最后还会报告磁盘的总空间和可利用空间等。   3、xcopy   含义:拷贝命令   格式:xcopy [源路径][源目录/文件名] [目的目录/文件名] [参数]   举例:xcopy c:\abc d:\ /s   执行此命令后,将把c:\abc目录及其目录中的文件全部拷贝到d盘根目录下,xcopy是copy的增强命令,可以实现对多个子目录进行拷贝。最常用的参数是/s,它可以对一个目录下的所有子目录进行拷贝。   4、deltree   含义:删除目录树   格式:deltree [盘符][路径]   举例:deltree are   表示删除当前路径下的are子目录,执行后会提示是否确认删除,按下y,即可删除。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值