Board logo

标题: 如何实现每5秒打开文档2秒后自动关闭文档 [打印本页]

作者: bbq123bbq     时间: 2006-11-17 05:01    标题: 如何实现每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 ?
作者: hxuan999     时间: 2006-11-23 03:13
关注
作者: vkill     时间: 2006-11-23 23:38
每5秒打开一次temp.txt  显示2秒后自动关闭开打的temp.txt

start and  taskkill
作者: redtek     时间: 2006-11-24 02:47
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)

作者: lxmxn     时间: 2006-11-25 10:13

@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

作者: lxmxn     时间: 2006-11-26 20:34

  多谢 Redtek 兄多次鼓励呀~