标题: [已解决]怎样实现批处理与用户对话执行? [打印本页]
作者: botong 时间: 2011-9-25 18:49 标题: [已解决]怎样实现批处理与用户对话执行?
本帖最后由 botong 于 2011-9-26 00:17 编辑
本人有一个批处理文件,内容如下:
start "13777777777" cmd /k E:\fetion\fetion.exe --config=list.conf --index=1
start "15000000000" cmd /k E:\fetion\fetion.exe --config=list.conf --index=2
start "15999999999" cmd /k E:\fetion\fetion.exe --config=list.conf --index=3
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
…………………………………………………………………………………………………………
类似这样的代码有十几行的,大意就是打开多个窗口分别处理一个飞信号的登录。
--index= 处理list.conf 中传过来的信息的。
现在我想如果不执行所有条的命令,可不可给来个询问,比如执行1、2、3……中的哪一个,也就是登录哪一个飞信?然后由用户根据需要选择输入序号,从而实现多个登录。
最好是能够选择不登录哪个,因为大多时间几乎全要登录,只有个别不需要登录。
另外在执行以上批处理的同时,是否判断窗口打开的时间,从而实现定时关闭,比如一个飞信号挂到了两个小时就自动退出程序。
有劳了,请教大家。
作者: awk 时间: 2011-9-25 19:34
- @echo off
- set list=1 2 3 4 5
- set input=0
- set /p input=请选择不登录哪个:
- for /f "delims=" %%a in ('more +8 "%~f0" ^| findstr /v "index=%input%"') do (
- %%a
- )
- goto :eof
- start "13777777777" cmd /k E:\fetion\fetion.exe --config=list.conf --index=1
- start "15000000000" cmd /k E:\fetion\fetion.exe --config=list.conf --index=2
- start "15999999999" cmd /k E:\fetion\fetion.exe --config=list.conf --index=3
- start "15999999998" cmd /k E:\fetion\fetion.exe --config=list.conf --index=4
- start "15999999997" cmd /k E:\fetion\fetion.exe --config=list.conf --index=5
复制代码
作者: botong 时间: 2011-9-25 19:49
回复 2# awk
经过测试发现你写的代码很好用?希望能够再帮助完善一下:
1.当不登录的号为一个时基本正常,只有当输入1时,发现少登了两个号。
2.当不登录的号为多个时,程序无法正常执行。比如我输入1 3 就只能运行一个窗口。
3.能否帮我加一个定时退出功能?
十分感谢!
作者: awk 时间: 2011-9-25 19:52
回复 3# botong
先解决问题1:- @echo off
- set list=1 2 3 4 5
- set input=0
- set /p input=请选择不登录哪个:
- for /f "delims=" %%a in ('more +8 "%~f0" ^| findstr /v "index=%input%$"') do (
- %%a
- )
- goto :eof
- start "13777777777" cmd /k E:\fetion\fetion.exe --config=list.conf --index=1
- start "15000000000" cmd /k E:\fetion\fetion.exe --config=list.conf --index=2
- start "15999999999" cmd /k E:\fetion\fetion.exe --config=list.conf --index=3
- start "15999999998" cmd /k E:\fetion\fetion.exe --config=list.conf --index=4
- start "15999999997" cmd /k E:\fetion\fetion.exe --config=list.conf --index=5
复制代码
作者: botong 时间: 2011-9-25 20:13
回复 4# awk
问题一已经解决,可以了。我现在是拿11个号来测试的。
当输入两个数字时,就指不定登几个号了,有可能登录5个,有可能登录2个或3个
当输入三个数字时,有可能登1个,2个,3个号全有可能的。
作者: awk 时间: 2011-9-25 21:38
回复 5# botong - @echo off
- setlocal enabledelayedexpansion
- set list=1 2 3 4 5
- set input=0
- set regexp=
- set /p input=请选择不登录哪个:
- for %%a in (%input%) do (
- set regexp=!regexp! index=%%a$
- )
- for /f "delims=" %%a in ('more +13 "%~f0" ^| findstr /v "%regexp%"') do (
- %%a
- )
- goto :eof
- start "13777777777" cmd /k E:\fetion\fetion.exe --config=list.conf --index=1
- start "15000000000" cmd /k E:\fetion\fetion.exe --config=list.conf --index=2
- start "15999999999" cmd /k E:\fetion\fetion.exe --config=list.conf --index=3
- start "15999999998" cmd /k E:\fetion\fetion.exe --config=list.conf --index=4
- start "15999999997" cmd /k E:\fetion\fetion.exe --config=list.conf --index=5
复制代码
作者: botong 时间: 2011-9-25 22:08
本帖最后由 botong 于 2011-9-25 23:16 编辑
回复 6# awk
怎么回事呢?怎么窗口一闪而过呢?我用回之前的语句也还是同样的情况,这是为什么呢?奇怪了。
作者: awk 时间: 2011-9-25 22:58
回复 7# botong
你到命令行窗口里面运行一下那个bat文件,看看报错信息是什么。
作者: botong 时间: 2011-9-25 23:35
本帖最后由 botong 于 2011-9-26 00:16 编辑
回复 8# awk
可以了,非常感谢,我反复的观察了一下,可能是我复制你的代码中间有空格所致吧,我把代码中间的空白部分全删除了,居然就好了,而且你的最后一个程序也完全可以用了,我测试了多次没有再发现问题,现在只差一个定时退出了,这个倒不是最重要的,谢谢你,早点睡吧。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |