标题: [文件操作] (已解決)【求助】遍历某目录下的所有可执行程序然后生成菜单 [打印本页]
作者: sniperhgy 时间: 2009-1-18 17:17 标题: (已解決)【求助】遍历某目录下的所有可执行程序然后生成菜单
遍历文件和通过菜单选中然后执行的用法倒是会,不过结合倒一起的方法就不会了。
具体情况如下,我有一个目录openbor,下面会有一些exe文件,而且会定期作一些
更新,每次更新,都会和以往的文件名有所不动,现在就是想请教一下高手,怎样
通过批处理来自动生成调用菜单。
假设openbor下面有1413.exe,1620.exe,1982.exe,2021.exe,2022.exe五个文件,
通过批处理想得到如下的运行效果:- ***********************
- * (a) 1413.exe *
- * (b) 1620.exe *
- * (c) 1620.exe *
- * (d) 1620.exe *
- * (e) 1620.exe *
- * (q) Exit *
- ***********************
复制代码
那些数字就是模拟器引擎的版本号,因为版本太多了,所以想要一个管理的批处理
通过a,b,c……等实现调用,请知道的朋友不吝赐教,谢谢了
[ 本帖最后由 sniperhgy 于 2009-1-23 14:27 编辑 ]
作者: rat 时间: 2009-1-18 18:19
- @echo off & setlocal enabledelayedexpansion
- set "table=abcdefghijklmnop"&set i=0
-
- echo ***********************
- for /r openbor %%a in (*.exe) do (
- call set a=%%table:~!i!,1%%
- set e!a!="%%a"
- echo * ^(!a!^) %%~nxa *
- set /a i+=1
- )
- set eq=exit/b
- echo * (q) Exit *
- echo ***********************
-
- set /p select=Plz choose:
- !e%select%!
- pause
复制代码
作者: sniperhgy 时间: 2009-1-19 08:09
非常感謝版主的幫助,不過,裏面的語句能否作一些詳細的註釋呢?
- @echo off & setlocal enabledelayedexpansion //設置延遲變量
- set "table=abcdefghijklmnop"&set i=0 //我猜想是爲了以後生成調用菜單
-
- echo ***********************
- for /r openbor %%a in (*.exe) do ( //遍歷文件
- call set a=%%table:~!i!,1%% //沒有看懂
- set e!a!="%%a" //沒有看懂
- echo * ^(!a!^) %%~nxa * //這句應該是爲了生成菜單的文字,但是沒有看懂
- set /a i+=1 //i++
- )
- set eq=exit/b //選q的時候退出
- echo * (q) Exit *
- echo ***********************
-
- set /p select=Plz choose:
- !e%select%! //沒有看懂
- pause
复制代码
麻煩知道的朋友提示一下,謝謝了
[ 本帖最后由 sniperhgy 于 2009-1-19 08:11 编辑 ]
作者: a794685135 时间: 2009-1-19 21:36
- @echo off & setlocal enabledelayedexpansion //开启变量延迟
- set "table=abcdefghijklmnop"&set i=0 //为后面菜单选项用
-
- echo *********************** //菜单开始
- for /r openbor %%a in (*.exe) do ( //获取目录下的exe文件
- call set a=%%table:~!i!,1%% //从table里面取菜单号
- set e!a!="%%a" //获得菜单对应的exe文件名
- echo * ^(!a!^) %%~nxa * //显示菜单和文件名
- set /a i+=1 //换菜单
- )
- set eq=exit/b //设置退出
- echo * (q) Exit * //显示退出菜单
- echo *********************** //菜单结束
-
- set /p select=Plz choose: //选择开始
- !e%select%! //执行那个exe文件
- pause
复制代码
[ 本帖最后由 a794685135 于 2009-1-19 21:40 编辑 ]
作者: sniperhgy 时间: 2009-1-20 07:34
謝謝5樓的朋友,能否說的更細緻一些呢?
比如:- call set a=%%table:~!i!,1%% //从table里面取菜单号
复制代码
這句,是用了什麽技術實現了從table裏面去菜單號?
麻煩朋友解答一下那些我不懂的部分,謝謝了
作者: a794685135 时间: 2009-1-22 21:35
你去掉call就知道结果了
我也说不大清楚,只能意会不能言传
呵呵 ,不好意思啊
作者: sniperhgy 时间: 2009-1-23 14:27
謝謝朋友的幫助
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |