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

[已解决]怎样实现批处理与用户对话执行?

本帖最后由 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……中的哪一个,也就是登录哪一个飞信?然后由用户根据需要选择输入序号,从而实现多个登录。
最好是能够选择不登录哪个,因为大多时间几乎全要登录,只有个别不需要登录。
另外在执行以上批处理的同时,是否判断窗口打开的时间,从而实现定时关闭,比如一个飞信号挂到了两个小时就自动退出程序。
有劳了,请教大家。
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  1. @echo off
  2. set list=1 2 3 4 5
  3. set input=0
  4. set /p input=请选择不登录哪个:
  5. for /f "delims=" %%a in ('more +8 "%~f0" ^| findstr /v "index=%input%"') do (
  6.     %%a
  7. )
  8. goto :eof
  9. start "13777777777" cmd /k E:\fetion\fetion.exe --config=list.conf --index=1
  10. start "15000000000" cmd /k E:\fetion\fetion.exe --config=list.conf --index=2
  11. start "15999999999" cmd /k E:\fetion\fetion.exe --config=list.conf --index=3
  12. start "15999999998" cmd /k E:\fetion\fetion.exe --config=list.conf --index=4
  13. start "15999999997" cmd /k E:\fetion\fetion.exe --config=list.conf --index=5
复制代码

TOP

回复 2# awk


    经过测试发现你写的代码很好用?希望能够再帮助完善一下:
1.当不登录的号为一个时基本正常,只有当输入1时,发现少登了两个号。
2.当不登录的号为多个时,程序无法正常执行。比如我输入1 3 就只能运行一个窗口。
3.能否帮我加一个定时退出功能?
十分感谢!

TOP

回复 3# botong


先解决问题1:
  1. @echo off
  2. set list=1 2 3 4 5
  3. set input=0
  4. set /p input=请选择不登录哪个:
  5. for /f "delims=" %%a in ('more +8 "%~f0" ^| findstr /v "index=%input%$"') do (
  6.     %%a
  7. )
  8. goto :eof
  9. start "13777777777" cmd /k E:\fetion\fetion.exe --config=list.conf --index=1
  10. start "15000000000" cmd /k E:\fetion\fetion.exe --config=list.conf --index=2
  11. start "15999999999" cmd /k E:\fetion\fetion.exe --config=list.conf --index=3
  12. start "15999999998" cmd /k E:\fetion\fetion.exe --config=list.conf --index=4
  13. start "15999999997" cmd /k E:\fetion\fetion.exe --config=list.conf --index=5
复制代码

TOP

回复 4# awk
问题一已经解决,可以了。我现在是拿11个号来测试的。
当输入两个数字时,就指不定登几个号了,有可能登录5个,有可能登录2个或3个
当输入三个数字时,有可能登1个,2个,3个号全有可能的。

TOP

回复 5# botong
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set list=1 2 3 4 5
  4. set input=0
  5. set regexp=
  6. set /p input=请选择不登录哪个:
  7. for %%a in (%input%) do (
  8.     set regexp=!regexp! index=%%a$
  9. )
  10. for /f "delims=" %%a in ('more +13 "%~f0" ^| findstr /v "%regexp%"') do (
  11.     %%a
  12. )
  13. goto :eof
  14. start "13777777777" cmd /k E:\fetion\fetion.exe --config=list.conf --index=1
  15. start "15000000000" cmd /k E:\fetion\fetion.exe --config=list.conf --index=2
  16. start "15999999999" cmd /k E:\fetion\fetion.exe --config=list.conf --index=3
  17. start "15999999998" cmd /k E:\fetion\fetion.exe --config=list.conf --index=4
  18. start "15999999997" cmd /k E:\fetion\fetion.exe --config=list.conf --index=5
复制代码
2

评分人数

    • botong: 非常感谢你的不断完善。技术 + 1
    • Batcher: 乐于助人技术 + 1

TOP

本帖最后由 botong 于 2011-9-25 23:16 编辑

回复 6# awk


怎么回事呢?怎么窗口一闪而过呢?我用回之前的语句也还是同样的情况,这是为什么呢?奇怪了。

TOP

回复 7# botong


你到命令行窗口里面运行一下那个bat文件,看看报错信息是什么。

TOP

本帖最后由 botong 于 2011-9-26 00:16 编辑

回复 8# awk
可以了,非常感谢,我反复的观察了一下,可能是我复制你的代码中间有空格所致吧,我把代码中间的空白部分全删除了,居然就好了,而且你的最后一个程序也完全可以用了,我测试了多次没有再发现问题,现在只差一个定时退出了,这个倒不是最重要的,谢谢你,早点睡吧。

TOP

返回列表