中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何实现每5秒打开文档2秒后自动关闭文档
作者:
标题: 如何实现每5秒打开文档2秒后自动关闭文档 上一主题 | 下一主题
bbq123bbq
初级用户




积分 197
发帖 77
注册 2006-9-19
状态 离线
『楼 主』:  如何实现每5秒打开文档2秒后自动关闭文档

@echo off
set n=1
:start
cls
for /f "tokens=1,2" %%i in ('arp -a^|findstr /c:"  192.168.0.251"') do echo %n% 次 %%i %%j

>>temp.txt
for /f "tokens=1,2" %%i in ('arp -a^|findstr /c:"  192.168.0.251"') do echo %n% 次 %%i %%j
set /a n=%n%+1
for /l %%a in (0,5,20) do  if %n%==%%a start temp.txt
ping -n 2 127.1 >nul
goto start

显示temp.txt次数是自己控制的..只能显示20次,能不能不限制打开temp.txt次数,循环每5秒打开一次temp.txt ?还有每隔5秒开打temp.txt  显示2秒后自动关闭开打的temp.txt ?

2006-11-17 05:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hxuan999
中级用户

DOS之日


积分 337
发帖 161
注册 2006-11-4
状态 离线
『第 2 楼』:  

关注



for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul
2006-11-23 03:13
查看资料  发送邮件  发短消息 网志  OICQ (33899867)  编辑帖子  回复  引用回复
vkill
金牌会员





积分 4103
发帖 1744
注册 2006-1-20
来自 甘肃.临泽
状态 离线
『第 3 楼』:  

每5秒打开一次temp.txt  显示2秒后自动关闭开打的temp.txt

start and  taskkill

2006-11-23 23:38
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 4 楼』:  

sendMsg.cmd 代码如下:
@echo %dbg% off
cls

echo.
echo  调试状态:在命令行上执行 set dbg=on 即可显示执行回显过程
echo  关闭调试:在命令行上执行 set dbg=   即可关闭回显进入正常运行模式
echo  退出执行:在执行过程中如需终止运行,按 Q 键退出
echo  简单测试:arp -a 列出其中ip,将此ip填入 set ".IP=填入这里" 进行实验
echo.

:Redtek 2006
        ::    设定被ARP操作的IP地址
        ::    set ".IP=192.168.0.12"
        set ".IP=  192.168.0.251"

        ::    设定消息接收者:为用户windows的登录名
        set ".sessionName=%username%"

        ::    设定存有显示消息的临时文件名
        set ".saveFile=temp.txt"

        ::    设定显示消息的时间:秒
        set ".viewTime=2"

        ::    设定显示执行下一个消息窗口指令的时间:秒
        set ".DoNextCmd=5"

        ::    设定消息窗口显示次数
        set ".loopRunNum=20"

        ::    追加方式初始化临时文件,防止意外错误
        echo.>>"%.saveFile%"

:start
        set /a ".loopRunNum-=1"
        if %.loopRunNum%==0 goto :end

        for /f "tokens=1,2" %%i in ('arp -a^|findstr /c:"%.IP%"') do ( echo %%i %%j>>"%.saveFile%" )

        msg "%.sessionName%" <"%.saveFile%" /time:%.viewTime% /w
        choice /T %.DoNextCmd% /C rq /d r /n>nul
        if %errorlevel%==2 goto :end
        goto :start

:end
        ::  清除使用过的变量
        ::  使用的变量前面加一个统一标置符“.”是为了注销变量时方便:)
        for /f "delims==" %%i in ('set .') do set "%%i="
        set "dbg="
在 “:Redtek 2006” 标签代码段可根据自己需要的值更改初始变量。


原理: 利用 Windows 系统自带的工具 MSG 消息发送系统来完成消息的显示工具。
    MSG 的 /w 参数具有 “阻塞执行状态” 执行显示当前窗口的功能,执行时系统处于等待状态,直行完才退出。

    MSG 的 /TIME 参数具有等待接收器确认消息的时间延迟功能,即除非用户主动结束窗口,否则消息在显示指定的n秒后结束显示。
    这样就代替了以强行杀掉进程的操作试图完成关闭消息显示窗口的方法。

    同时,MSG 可以将指定的消息发送到局域网内的任何一台计算机内,无论是广播还是指定接收者,都能如愿以偿的执行:)

    如果使用 Ping -n ....<nul 指令以求间接达到 “延时” 的效果,则CPU将处于高负荷状态,甚至达到90%。
    所以使用了 CHOICE 来达到等待延时的效果,经测试其CPU峰值约0-2%左右。
    而 CHOICE 的取用户选择值的功能,可以达到按指定的键则终止代码运行,方便用户执行期间安全退出。

    当执行 ARP 时,其 CPU 测试峰值约为 2-13%,对系统影响不大。


    for /f "delims==" %%i in ('set .') do set "%%i=" 这条语句是为了清除使用过的变量而设置的。
    代码中所用到的变量均为前面加一个 “.”,这样当我使用完它们时则一个For就可以了,不用一个一个列出来再删。
    这是利用了 SET . 当此操作时,系统会显示所有以 “.” 开头的变量,一个for自然全部将其找到并“引入”,然后赋“空”值清除操作。



) 另:中文版 Windows XP 系统如果你找不到 CHOICE.EXE 文件,则这个文件与此代码一同被压缩进此贴附件内,需要的朋友方便下载:)

附件 1: sendMsg.rar (2006-11-24 02:47, 17.47 K, 下载附件所需积分 1 点 ,下载次数: 22)


    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-11-24 02:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 5 楼』:  


@echo off
set/a n=1
:start
cls
for /f "tokens=1,2" %%i in ('arp -a^|findstr /c:"  192.168.0.251"') do (
        echo %n% 次 %%i %%j >>temp.txt
        echo %n% 次 %%i %%j
)
set/a n+=1
set n_=
set/a n_=%n%%%5
if %n_% equ 0 (
        start "" temp.txt >NUL 2>NUL
        ping -n 3 127.1 >nul 2>NUL
        taskkill /fi "WINDOWTITLE EQ temp.txt - 记事本" >nul 2>nul
        REM 因为temp.txt里面的内容多了,而temp.txt文件只打开两秒就要关闭,所以建议先把里面的内容清空。
        REM 下一步就是清空的,如果不需要,可以在前加上REM。
        cd.>temp.txt)
ping -n 2 127.1>nul
goto start


   此帖被 +4 点积分     点击查看详情   
评分人:【 redtek 分数: +3  时间:2006-11-25 10:22
评分人:【 lfun 分数: +1  时间:2007-12-20 20:38


2006-11-25 10:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 6 楼』:  


  多谢 Redtek 兄多次鼓励呀~


2006-11-26 20:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: