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

[已解决]批处理输入提示语句和定时关闭如何实现?

本帖最后由 botong 于 2011-9-27 07:07 编辑

awk 帮本人写了一个批处理,非常好用,原帖地址:http://bbs.bathome.net/viewthread.php?tid=14142
  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
复制代码
大意就是用批处理打开多个窗口登录多个飞信。我希望把它在细节上进一步完善一下。
我想在“set /p input=请选择不登录哪个:”上面加一句话,就是描述一下可以输入范围及各个数字所代表的手机号。
然后对于每个用start打开的窗口能够有定时关闭功能,每个飞信挂两个小时间自动关闭。
期待大家给一个完美的解决!

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

TOP

本帖最后由 cjiabing 于 2011-9-26 14:15 编辑

提示:
1、获得打开的飞信的信息——标题:手机号
2、定时——用AT或schtasks打开一个批处理程序
3、这个批处理程序可能是:at  %time%  taskkill  /fi  "WINDOWTITLE     eq    title手机号"
4、倒计时,这个没什么问题。
完整:
  1. set  "shoujihao=13777777777 1500000000  15900000000"
  2. set  nb=0
  3. for  %%a in (%shoujihao%) do (
  4.     set /a nb+=1
  5.     start "%%a" cmd /k E:\fetion\fetion.exe --config=list.conf --index=!nb!
  6.     rem 获得进程标题的代码,IF存在该标题则执行一条AT命令。
  7. )
复制代码
所有以上子部分论坛里都有现成的代码,自己搜索下。
  有关进程的:批处理与进程
  at和schtasks的自己搜索,能用at最好用at,schtasks比较复杂。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 2# awk
真的是太感激了,又是你,呵呵。
可是这次又执行不了了,只要把这几句删了就能执行,加上就不能执行,这是为什么呢?
  1. echo 可以输入的范围:1~5
  2. echo 1:13777777777
  3. echo 2:15000000000
  4. echo 3:15999999999
  5. echo 4:15999999998
  6. echo 5:15999999997
复制代码
出错提示如下:
E:\fetion>fetion.bat
可以输入的范围:1~5
1:13777777777
2:15000000000
3:15999999999
4:15999999998
5:15999999997
请选择不登录哪个:5
')' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'for' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'%%a' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
')' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

本人在发本帖之前就试图加上echo的,可是出错,解决不了,反复试,还是不行。才再次发帖求教。
另外3楼的方法似乎可以解决我的第2个问题,可是实在有些难度,大侠帮我也试着写写看吧。

TOP

回复 4# botong


可能是你的浏览器在复制代码的时候出现了问题,我把代码保存在文本里面,你直接下载把。
1

评分人数

    • botong: 非常感谢awk不断配合本人实测改进技术 + 1

TOP

回复 4# botong
晕,这代码能执行才怪
  1. for %%a in (%input%) do (
  2. set regexp=!regexp! index=%%a$
  3. )
  4. for /f "delims=" %%a in ('more +19 "%~f0" ^| findstr /v "%regexp%"') do (
  5. %%a
  6. )
复制代码


    修改
  1. for  %%a in (%input%) do (
  2.     set  "regexp=!regexp! index=%%a$"
  3.     rem 搞不清楚你这个set搞什么
  4. )
  5. for /f  "delims="  %%a in ('more +19  "%~f0" ^| findstr  /v  "%regexp%"') do  echo;%%a
复制代码
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

本帖最后由 botong 于 2011-9-27 07:23 编辑

感谢 2# awk 同时也感谢 6# cjiabing
经过我的测试证明awk的代码是可以用的,可能还是我复制的问题吧,虽然我也特别小心了,并且复制回来了,我还在一一检查了,删除了多余的,还是不能执行,他给我发和TXT居然就可以了,而且这样也证实了set 后面的双引号是可要可不要的。
经过我仔细的观察才知道,这行代码:
  1. for /f "delims=" %%a in ('more +19 "%~f0" ^| findstr /v "%regexp%"') do (
复制代码
才是总出问题的所在,复制下来会有空行,甚至我没有在意awk用的“more +”后面的数字,所以出错。
感谢两位的大力帮助,那个自动关闭功能还有可能实现吗?求教中……

TOP

回复 6# cjiabing


我那个set正是整个代码的精髓所在,你还没看懂

TOP

那个 set 是用于附加关键词用于搜索的,不过建议使用 findstr /le "=n =m",更简洁些。另外,从效率方面考虑,也可以考虑变量替换的思路。

TOP

返回列表