以上大侠的注册表方案是可行的,但不是我最想要的,我还不是我最想要的,经过我一天多的一点点探索,我终于找到我想要的方案了,在这小弟我向大家公布一下的我的探索过程,供大家学习,有不对的地方请大家指教.
我最近在学习批处理,对它很有兴趣,所以才坚持让它来实现的我的想法.
我想让这段程序驻留在内存中随时监控qqgame.exe等类似文件存在,若有的话马上删除到,刚开始我想的是目录安在C盘,
用的命令是:
@echo off
if exist c:\"program files"\tencent\qqgame\qqgame.exe del c:\"program files\tencent\qqgame\qqgame.exe
(那个双引号是我摸索半天才想到的,不加它的话,就会一直提示:系统无法找到路径.我郁闷了半天,难道是目录层次太多,又拿了d盘作实验,结果不管多少目录都可以找到路径,突然想起programe files 是两个单词,是否因为这个呢,先加了单引号,不行,又加了双引号,行了,很高兴)
虽然这个可以,但有两个毛病:一是不是随时监控的,二是目录确定的太死板,改下目录就不管用了.
为了改进它,我又用到了for 命令:
@echo off
for %%1 in (c: d:) do @del %%1\qqgame*.* /s /a
想想怎么一直执行这个命令呢,想到了再循环一次,用了以下命令:
@echo off
:zhang
for %%1 in (c: d:) do @del %%1\qqgame*.* /s /a
goto zhang
这样在我的机子执行了一下
我靠我的cpu都让它用完了,这还了得,它是个死循环了,得另换法了,
我又想能能让for %%1 in (c: d:) do @del %%1\qqgame*.* /s /a
定期执行一次呢,这样cpu就可以休息一下了
我想到了at命令 用at /?一查,希望又没了,它是最小单位是天啊,我反不能一天执行一次吧,算了,再换吧.
我用help看一下还没有别的好的命令
终于让我查到schtasks这个命令,这个命令应该是windows2003特有的,其它系统好像没有,它的用处实在是太强大了,比at要强几百倍,下面附一点它的资料:
Schtasks
安排命令和程序,使其定期运行或在指定时间运行。向计划中添加任务和从中删除任务、根据需要启动和停止任务以及显示和更改计划的任务。
要查看该命令语法,请单击以下命令:
? schtasks create
? schtasks change
? schtasks run
? schtasks end
? schtasks delete
? schtasks query
schtasks create
计划任务。
Schtasks 针对各种计划类型使用不同参数组合。要查看创建任务的组合语法或查看使用特定计划类型创建任务的语法,请单击以下选项之一。
? 组合语法和参数描述
? 计划任务每 N 分钟运行一次
? 计划任务每 N 小时运行一次
? 计划任务每 N 天运行一次
? 计划任务每 N 周运行一次
? 计划任务每 N 月运行一次
? 计划任务在周的指定天运行
? 计划任务在月份的指定周运行
? 计划任务在每月的特定日期运行
? 计划任务在月份的最后一天运行
? 计划任务运行一次
? 计划任务在每次系统启动时运行
? 计划任务在用户登录时运行
? 计划任务在系统空闲时运行
? 计划任务现在运行
? 计划任务以不同权限运行
? 计划任务以系统权限运行
? 计划任务运行多个程序
? 计划任务在远程计算机上运行
组合语法和参数描述
语法
Schtasks /create /sc ScheduleType /tn TaskName /tr TaskRun User ]] User | System}] | *] ] ]
看了半天用了以下命令:
schtasks /create /u 用户名 /p 密码 /sc minute /mo 1 /tn "即时删除" /tr d:\a.bat
a.bat的内容为:
@echo off
for %%1 in (c: d:) do @del %%1\qqgame*.* /s /a
这样看似可以了,但我还有要求,它的最低间隔时间是1分钟,我觉得时间太长,我想15秒
就执行一次,这个先放这吧,再找一下.
我又查看了一会,让我找到了choice这个命令里的/t参数,t的作用是做出默认的选择前,暂停的秒数,它的单位是秒,这正是我想要的,哈哈,机会来了,让我想到下的命令:
@echo off
:zhang
for %%1 in (c: d:) do @del %%1\qqgame*.* /s /a
choice /t 15 /d y
goto zhang
我保存为a.bat
打开后,发现它是一窗口,不能消失,我想让它在后台运行,找一下相关资料,我觉得用vbs脚本不错,又写了下面的脚本:
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "d:\a.bat",0
保存为b.vbs
这样再运行一下,哈哈,成功了,它在后台运行了,每隔15就会检查机器里有无qqgame*.*这样的文件,有的话就马上删除了,终于实现了我的愿望.
后来我在网上搜了一下,又找到一方法,没有试,不知行不行:
@echo off
setlocal ENABLEDELAYEDEXPANSION
set /a next_hour=0
set /a next_minute=0
for /F tokens=1,2 delims=: %%i in (TIME /T) do (
rem 这里1是间隔时间,可以根据需要自己调节
set /a next_minute=%%j+1
set /a next_hour=%%i
if !next_minute! GEQ 60 (
set /a next_minute=!next_minute!-60
set /a next_hour=!next_hour!+1
if !next_hour! GEQ 24 set /a next_hour=!next_hour!-24
)
)
at !next_hour!:!next_minute! c:\settimerun.bat
rem 这里是具体所要执行的命令,可以根据需要自己调整
copy c:\windows\system32\notepad.exe d:\notepad.exe
endlocal
@echo on