中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-14 21:00
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求一即时删除文件的批处理程序!!!
16 发表于 2006-10-25 20:27 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
UID 60484
状态 离线
从楼主这儿了解到个新命令,谢谢,又学到新东西了。

PS:楼主的方法是搜硬盘,我觉得效率可能不是很高,如果换成直接用 taskkill 结束 qqgame 的进程,会不会对机子的负担稍低些呢?而且为了对机子负担小些,可以设的时间稍长些。你同学玩QQ游戏时才玩个几分钟突然就莫名的退出了,几次后不明原因也就不想玩了。用 DEL 删除有很小的可能性会碰到“另一个程序正在使用此文件,进程无法访问。”
17 发表于 2006-10-25 21:07 ·  中国 江苏 无锡 宜兴市 电信
初级用户
积分 44
发帖 16
注册 2006-08-15 07:15
UID 60550
状态 离线
学习了.真不错.
18 发表于 2006-10-25 21:34 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
UID 63387
状态 离线
我的贴又上来了,很开心,又能让大家学到更多的知识了.
谢谢naturaljo的指教,我这些时间已把这个批处理修改的比较人性化了,你说的那个taskkill我已加过了,现在已实现的批处理思想是,开机后运行一计划,隔三分钟检查一下硬盘里有没有qqgame.exe这个程序,没有的话就退出,有的话创建一计划,在一小时后自己执行一结束和删除与qqgame.exe有关的程序,这个结束和删除的批处理驻留的内存中,我想让他们只玩一小时就行了,也不能一会不让玩呀,毕竟是朋友么,我主要是想用这种思维来学习一下在应用中学习批处理.

[ Last edited by tianzizhi on 2006-10-25 at 09:57 PM ]
19 发表于 2006-10-25 21:52 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
UID 63387
状态 离线
我把我已应用的批处理拿上来让大家看看,高手们也指教一下,新手们学习一下,谢谢,
这个批处理分三部分:
第一部分,是开机运行一计划的部分:
首在机子创建一任务:schtasks /create /ru system /sc 3 /mo minute /tn zhang /tr d:\常用\g.vbs 创建好后这个以后就不用管了,它以后会一直在机子里的.
g.vbs连接的批处理内容为:
@echo off
schtasks /change /tn zhang /ru system /enable
schtasks /run /tn zhang

这是第一部分运行计划部分,下面是第二部分,执行检查的部分:
下面的执行部分两种写法
一:
@echo off
for %%1 in (c: d:) do @%%1 & dir QQGame.exe /s /a /b>>c:\windows\dir.txt
type c:\windows\dir.txt | find "QQGame.exe" /i
if errorlevel 1 goto end
if errorlevel 0 goto zhang

:end
exit
:zhang
@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=1%%j-100

set /a next_hour=1%%i-100+1

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
)
)
schtasks /change /tn zhang /ru system /disable
copy d:\常用\dir.txt c:\windows\ /y
at !next_hour!:!next_minute! d:\常用\d.vbs

endlocal

二:@echo off
for %%1 in (c: d:) do @%%1 & dir QQGame.exe /s /a /b>>c:\windows\dir.txt
type c:\windows\dir.txt | find "QQGame.exe" /i
if errorlevel 1 goto end
if errorlevel 0 goto zhang

:end
exit
:zhang
@echo off
@echo off
setlocal ENABLEDELAYEDEXPANSION
rem 这里1是间隔时间,可以根据需要自己调节
set a=%time:~0,2%
echo %a%
set /a next_hour=a+1
set a=%time:~3,2%
if %a:~0,1%==0 (set /a next_minute=%a:~1%+1) else set /a next_minute=a+1
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
)
schtasks /change /tn zhang /ru system /disable
copy d:\常用\dir.txt c:\windows\ /y
at !next_hour!:!next_minute! d:\常用\d.vbs
endlocal

上面是第二部分检查的部分,下面是第三部分,到时间执行结束任务和删除程序的部分:
@echo off
:zhang
for %%1 in (c: d:) do @taskkill /f /t /im qqgame.exe & del %%1\qqgame*.* /s /a
choice /t 120 /d y
goto zhang

好了,一共就这么多了,请大家看看吧,也请高手们提出更好的建议,把它更完善一下,谢谢!!!
20 发表于 2006-10-25 22:34 ·  中国 广东 深圳 福田区 电信
初级用户
★★
积分 133
发帖 57
注册 2006-03-15 23:12
UID 52128
状态 离线
搂主学习的精神值得我学下!
21 发表于 2006-10-25 22:36 ·  中国 江苏 苏州 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
UID 60484
状态 离线
用这句

dir /a /s c:\qqgame.exe >nul 2>nul && goto zhang || dir /a /s d:\qqgame.exe >nul 2>nul && goto zhang || goto end

代替

for %%1 in (c: d:) do @%%1 & dir QQGame.exe /s /a /b>>c:\windows\dir.txt
type c:\windows\dir.txt | find "QQGame.exe" /i
if errorlevel 1 goto end
if errorlevel 0 goto zhang

试试?(不生成临时文件 dir.txt。)

PS:你把 qqgame.exe 删了,下次再玩岂不是要重装。
22 发表于 2006-10-26 00:52 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
UID 63387
状态 离线
naturaljo上面的建议很好,简化了不少,也让我揣摩一会子,&&和||用的很好呀,对于nul空设备的用法我是不太熟悉的,你能否找些它的用法贴上好让大家看看呀,你上面的
>nul 2>nul的意思能说明白一下吗,谢谢,其实我也是菜鸟的,要多多学习呀,呵呵.
(向naturaljo解释一下,我机子是不装QQ游戏的,他们玩他们下载自己装,我的机子装了影子系统,开机游戏就没了.我不玩的,只是他们一玩就没有尾了,所有才想这用这个逗逗他们的,我现在在学批处理的,所以有了这个想法,用批处理实现,许多网友说用禁止,我也知道,这样的话我学习批处理还有什么用呢,学习它就要用它的对吧,其实我的最大目的不用禁止玩游戏,而是学习用批处理实现我的想法,学以致用.最后还要谢谢naturaljo的关心!!!!)
23 发表于 2006-10-26 01:44 ·  中国 江苏 苏州 吴中区 电信
银牌会员
★★★
积分 1,181
发帖 533
注册 2006-08-14 12:54
UID 60484
状态 离线
贴段实例:


C:\Documents and Settings\J>dir test/b
找不到文件

C:\Documents and Settings\J>dir test/b 2>nul

C:\Documents and Settings\J>cd.>test

C:\Documents and Settings\J>dir test/b
test

C:\Documents and Settings\J>dir test/b >nul

C:\Documents and Settings\J>_


>nul 表示屏蔽标准输出
2>nul 表示屏蔽错误输出
结合上面的实例应该能看明白。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
redtek +2 2006-11-09 00:16
24 发表于 2006-10-26 04:03 ·  中国 江苏 南京 电信
高级用户
★★
积分 623
发帖 214
注册 2006-09-22 20:48
UID 63387
状态 离线
明白了,谢谢!!
25 伟大领袖毛主席说:没有解决不了问题 发表于 2006-10-31 11:06 ·  中国 天津 联通
社区乞丐
积分 -128
发帖 2
注册 2006-10-14 22:34
UID 65777
性别 男
状态 离线
tianzihi的文章太好了。俺在这里找了好久都没有找到圆满在批处理中定时执行的问题,只好用VBS调用BAT,是你提到CHOICE /T,用此命令在BAT中定时是再好不过了!谢谢!
26 发表于 2006-11-08 12:03 ·  中国 天津 河东区 联通
初级用户
积分 22
发帖 9
注册 2006-11-08 08:43
UID 70014
性别 男
状态 离线
组策略设置,禁止运行相应程序
27 发表于 2006-11-09 06:30 ·  中国 北京 海淀区 联通
初级用户
★★
积分 122
发帖 54
注册 2006-11-03 04:24
UID 69380
性别 男
状态 离线
是基于qqgame.exe做检测吗?有目录限制没有,象我一般都是绿色版QQGAME,你这种方法不知道可行不?
28 发表于 2006-11-12 03:03 ·  中国 吉林 四平 联通
高级用户
★★★
积分 859
发帖 413
注册 2006-08-14 21:55
UID 60532
状态 离线
运行计化任务后,在进程里,有任务的进程吗?
关于schtasks这个命令,有没有详细的中文介绍和下载?
29 发表于 2006-11-12 13:40 ·  中国 上海 浦东新区 电信
新手上路
积分 6
发帖 3
注册 2006-11-12 07:02
UID 70304
性别 男
状态 离线
感谢楼主的贴子,让我找到了学习这个的方法!
30 发表于 2007-01-24 06:30 ·  中国 安徽 芜湖 电信
高级用户
★★★
积分 866
发帖 415
注册 2005-12-04 11:19
UID 46459
状态 离线
XP已经不支持choice 这个命令了。
楼主的钻研精神实在可嘉。
论坛跳转: