标题: [已解决]批处理输入提示语句和定时关闭如何实现? [打印本页]
作者: botong 时间: 2011-9-26 12:09 标题: [已解决]批处理输入提示语句和定时关闭如何实现?
本帖最后由 botong 于 2011-9-27 07:07 编辑
awk 帮本人写了一个批处理,非常好用,原帖地址:http://bbs.bathome.net/viewthread.php?tid=14142
- @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
复制代码
大意就是用批处理打开多个窗口登录多个飞信。我希望把它在细节上进一步完善一下。
我想在“set /p input=请选择不登录哪个:”上面加一句话,就是描述一下可以输入范围及各个数字所代表的手机号。
然后对于每个用start打开的窗口能够有定时关闭功能,每个飞信挂两个小时间自动关闭。
期待大家给一个完美的解决!
作者: awk 时间: 2011-9-26 13:05
- @echo off
- setlocal enabledelayedexpansion
- set list=1 2 3 4 5
- set input=0
- set regexp=
- echo 可以输入的范围:1~5
- echo 1:13777777777
- echo 2:15000000000
- echo 3:15999999999
- echo 4:15999999998
- echo 5:15999999997
- set /p input=请选择不登录哪个:
- for %%a in (%input%) do (
- set regexp=!regexp! index=%%a$
- )
- for /f "delims=" %%a in ('more +19 "%~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
复制代码
作者: cjiabing 时间: 2011-9-26 14:08
本帖最后由 cjiabing 于 2011-9-26 14:15 编辑
提示:
1、获得打开的飞信的信息——标题:手机号
2、定时——用AT或schtasks打开一个批处理程序
3、这个批处理程序可能是:at %time% taskkill /fi "WINDOWTITLE eq title手机号"
4、倒计时,这个没什么问题。
完整:- set "shoujihao=13777777777 1500000000 15900000000"
- set nb=0
- for %%a in (%shoujihao%) do (
- set /a nb+=1
- start "%%a" cmd /k E:\fetion\fetion.exe --config=list.conf --index=!nb!
- rem 获得进程标题的代码,IF存在该标题则执行一条AT命令。
- )
复制代码
所有以上子部分论坛里都有现成的代码,自己搜索下。
有关进程的:批处理与进程
at和schtasks的自己搜索,能用at最好用at,schtasks比较复杂。
作者: botong 时间: 2011-9-26 19:05
回复 2# awk
真的是太感激了,又是你,呵呵。
可是这次又执行不了了,只要把这几句删了就能执行,加上就不能执行,这是为什么呢?- echo 可以输入的范围:1~5
- echo 1:13777777777
- echo 2:15000000000
- echo 3:15999999999
- echo 4:15999999998
- 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个问题,可是实在有些难度,大侠帮我也试着写写看吧。
作者: awk 时间: 2011-9-26 21:20
回复 4# botong
可能是你的浏览器在复制代码的时候出现了问题,我把代码保存在文本里面,你直接下载把。
作者: cjiabing 时间: 2011-9-26 21:36
回复 4# botong
晕,这代码能执行才怪
- for %%a in (%input%) do (
- set regexp=!regexp! index=%%a$
- )
- for /f "delims=" %%a in ('more +19 "%~f0" ^| findstr /v "%regexp%"') do (
- %%a
- )
复制代码
修改
-
- for %%a in (%input%) do (
- set "regexp=!regexp! index=%%a$"
- rem 搞不清楚你这个set搞什么
- )
-
- for /f "delims=" %%a in ('more +19 "%~f0" ^| findstr /v "%regexp%"') do echo;%%a
复制代码
作者: botong 时间: 2011-9-26 23:21
本帖最后由 botong 于 2011-9-27 07:23 编辑
感谢 2# awk 同时也感谢 6# cjiabing
经过我的测试证明awk的代码是可以用的,可能还是我复制的问题吧,虽然我也特别小心了,并且复制回来了,我还在一一检查了,删除了多余的,还是不能执行,他给我发和TXT居然就可以了,而且这样也证实了set 后面的双引号是可要可不要的。
经过我仔细的观察才知道,这行代码:- for /f "delims=" %%a in ('more +19 "%~f0" ^| findstr /v "%regexp%"') do (
复制代码
才是总出问题的所在,复制下来会有空行,甚至我没有在意awk用的“more +”后面的数字,所以出错。
感谢两位的大力帮助,那个自动关闭功能还有可能实现吗?求教中……
作者: awk 时间: 2011-9-27 00:12
回复 6# cjiabing
我那个set正是整个代码的精髓所在,你还没看懂
作者: CrLf 时间: 2011-9-27 08:25
那个 set 是用于附加关键词用于搜索的,不过建议使用 findstr /le "=n =m",更简洁些。另外,从效率方面考虑,也可以考虑变量替换的思路。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |