[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] (已解決)【求助】遍历某目录下的所有可执行程序然后生成菜单

遍历文件和通过菜单选中然后执行的用法倒是会,不过结合倒一起的方法就不会了。
具体情况如下,我有一个目录openbor,下面会有一些exe文件,而且会定期作一些
更新,每次更新,都会和以往的文件名有所不动,现在就是想请教一下高手,怎样
通过批处理来自动生成调用菜单。

假设openbor下面有1413.exe,1620.exe,1982.exe,2021.exe,2022.exe五个文件,
通过批处理想得到如下的运行效果:
  1. ***********************
  2. *   (a)  1413.exe  *
  3. *   (b)  1620.exe  *
  4. *   (c)  1620.exe  *
  5. *   (d)  1620.exe  *
  6. *   (e)  1620.exe  *
  7. *   (q)   Exit          *
  8. ***********************
复制代码
那些数字就是模拟器引擎的版本号,因为版本太多了,所以想要一个管理的批处理
通过a,b,c……等实现调用,请知道的朋友不吝赐教,谢谢了

[ 本帖最后由 sniperhgy 于 2009-1-23 14:27 编辑 ]

  1. @echo off & setlocal enabledelayedexpansion
  2. set "table=abcdefghijklmnop"&set i=0
  3. echo ***********************
  4. for /r openbor %%a in (*.exe) do (
  5. call set a=%%table:~!i!,1%%
  6. set e!a!="%%a"
  7. echo *   ^(!a!^)  %%~nxa  *
  8. set /a i+=1
  9. )
  10. set eq=exit/b
  11. echo *   (q)   Exit          *
  12. echo ***********************
  13. set /p select=Plz choose:
  14. !e%select%!
  15. pause
复制代码

TOP

非常感謝版主的幫助,不過,裏面的語句能否作一些詳細的註釋呢?
  1. @echo off & setlocal enabledelayedexpansion     //設置延遲變量
  2. set "table=abcdefghijklmnop"&set i=0    //我猜想是爲了以後生成調用菜單
  3. echo ***********************
  4. for /r openbor %%a in (*.exe) do (          //遍歷文件
  5.         call set a=%%table:~!i!,1%%          //沒有看懂
  6.         set e!a!="%%a"                              //沒有看懂
  7.         echo *   ^(!a!^)  %%~nxa  *              //這句應該是爲了生成菜單的文字,但是沒有看懂
  8.         set /a i+=1                                       //i++
  9. )
  10. set eq=exit/b                                           //選q的時候退出
  11. echo *   (q)   Exit          *
  12. echo ***********************
  13. set /p select=Plz choose:                                            
  14. !e%select%!                                            //沒有看懂
  15. pause
复制代码

麻煩知道的朋友提示一下,謝謝了

[ 本帖最后由 sniperhgy 于 2009-1-19 08:11 编辑 ]

TOP

  1. @echo off & setlocal enabledelayedexpansion           //开启变量延迟
  2. set "table=abcdefghijklmnop"&set i=0                  //为后面菜单选项用
  3. echo ***********************                          //菜单开始
  4. for /r openbor %%a in (*.exe) do (                    //获取目录下的exe文件
  5.         call set a=%%table:~!i!,1%%                   //从table里面取菜单号
  6.         set e!a!="%%a"                                //获得菜单对应的exe文件名
  7.         echo *   ^(!a!^)  %%~nxa  *                   //显示菜单和文件名
  8.         set /a i+=1                                   //换菜单
  9. )
  10. set eq=exit/b                                         //设置退出
  11. echo *   (q)   Exit          *                        //显示退出菜单
  12. echo ***********************                          //菜单结束
  13. set /p select=Plz choose:                             //选择开始
  14. !e%select%!                                           //执行那个exe文件
  15. pause
复制代码

[ 本帖最后由 a794685135 于 2009-1-19 21:40 编辑 ]

TOP

謝謝5樓的朋友,能否說的更細緻一些呢?
比如:
  1. call set a=%%table:~!i!,1%%                   //从table里面取菜单号
复制代码
這句,是用了什麽技術實現了從table裏面去菜單號?
麻煩朋友解答一下那些我不懂的部分,謝謝了

TOP

你去掉call就知道结果了
我也说不大清楚,只能意会不能言传
呵呵 ,不好意思啊

TOP

謝謝朋友的幫助

TOP

返回列表