中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求助大侠:写一个自动处理邮箱文件过大的批处理程序
作者:
标题: 求助大侠:写一个自动处理邮箱文件过大的批处理程序 上一主题 | 下一主题
liang666669
新手上路





积分 12
发帖 5
注册 2007-5-15
状态 离线
『楼 主』:  求助大侠:写一个自动处理邮箱文件过大的批处理程序

问题:小弟是企业电脑技术员,公司员工用outlookexpress收信,限于oE软件本身的能力,如果一个收件箱文件超过一定容量就会极大影响oe速度,甚至不能打开oe。邮件文件都在D:\workmail\下。
思路:小弟想做一个开机脚本,每次开机时自动检测收件箱文件(收件箱.dbx)的大小是否超过400M,如果是的话,将这个文件改名成系统当前日期的(2007-5-15日前.dbx).
困惑:可以用dir获得文件大小,但该怎样做比较?
请各位高手指教.

2007-5-15 21:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
vkill
金牌会员





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

for  ....  %%~zi

2007-5-15 21:55
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
liang666669
新手上路





积分 12
发帖 5
注册 2007-5-15
状态 离线
『第 3 楼』:  

什么意思,小弟对脚本没有什么研究,help也看得头疼,还要麻烦老大详细解释一下,或放出代码,感谢

[ Last edited by liang666669 on 2007-5-15 at 10:17 PM ]

2007-5-15 22:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
liang666669
新手上路





积分 12
发帖 5
注册 2007-5-15
状态 离线
『第 4 楼』:  

运行如下代码
---------------
@echo off
for /l %%~zI  in (D:\workmail\收件箱.dbx) do if %%I >100000 then reanme D:\workmail\收件箱.dbx 新.dbx
pause
---------------
文件没有任何改变
请老大们指教.

[ Last edited by liang666669 on 2007-5-15 at 10:35 PM ]

2007-5-15 22:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dikex
高级用户

潜水修练批处理



积分 788
发帖 366
注册 2006-12-31
状态 离线
『第 5 楼』:  

@echo off
for /f %%I  in ("D:\workmail\收件箱.dbx") do if %%~zI GTR 100000 then reanme D:\workmail\收件箱.dbx 新.dbx
pause

[ Last edited by dikex on 2007-5-15 at 10:55 PM ]



正在潜水修练的批处理小白
2007-5-15 22:51
查看资料  发短消息 网志   编辑帖子  回复  引用回复
liang666669
新手上路





积分 12
发帖 5
注册 2007-5-15
状态 离线
『第 6 楼』:  

感谢2楼和5楼的兄弟,经试验,已经可以改名了,只是该怎样用系统时间给他命名呢,如"2007-5-14前.dbx"

2007-5-16 08:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
13579246810
初级用户





积分 45
发帖 21
注册 2007-3-14
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by dikex at 2007-5-15 10:51 PM:
@echo off
for /f %%I  in ("D:\workmail\收件箱.dbx") do if %%~zI GTR 100000 then reanme D:\workmail\收件箱.dbx 新.dbx
pause

[ Last edited by dikex on 2007-5-15 at 10:55 PM ]

加一行 for " tokens=1 delims= " /f %%l in ('date /t') do set date=%%l


reanme D:\workmail\收件箱.dbx 新.dbx   
ren d:\workmail\%date%前.dbx

[ Last edited by 13579246810 on 2007-5-16 at 09:20 AM ]

2007-5-16 09:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
liang666669
新手上路





积分 12
发帖 5
注册 2007-5-15
状态 离线
『第 8 楼』:  日期问题

全部代码
///////////////////////////////////////////////////////////////////////////
@echo off
for /f %%I  in ("D:\workmail\收件箱.dbx") do if %%~zI GTR 50000000  rename D:\workmail\收件箱.dbx %date%前邮件.dbx && @echo 你的邮箱文件过大,为了防止邮箱文件崩溃,系统管理员已经将你的当前收件箱内的邮件全部转移到"%date%前邮件"中,在此过程中如果遇到问题,请联系IT组 >> C:\autorun.bat && REG ADD hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /V "chk_ml_sz" /T REG_sz /D "C:\autorun.bat" /F
for /f %%I  in ("E:\workmail\收件箱.dbx") do if %%~zI GTR 50000000  rename e:\workmail\收件箱.dbx %date%前邮件.dbx  && echo 你的邮箱文件过大,为了防止邮箱文件崩溃,系统管理员已经将你的当前收件箱内的邮件全部转移到"%date%前邮件"中,在此过程中如果遇到问题,请联系管理员 > C:\autorun.bat && REG ADD hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /V "chk_ml_sz" /T REG_sz /D "C:\autorun.bat" /F
pause
/////////////////////////////////////////////////////////////////////////////////////

谢谢各位大老的指教,现在我的这个脚本又出现了一个问题:在原来的操作系统下运行正常,可以重装了一下系统再运行就出错,说"命令语法不正确",我把%date%变量换成了一个字符常量 如"新邮件"之类就没有报错.我在命令行里执行date命令,结果是
当前日期: 2007-05-30 星期三
输入新日期: (年月日)
我想是这个日期太长了,不符合命名规则吧,但我在以前的系统为什么可以把文件名改成如"2007-05-30前"形式,现在又不行了.还有我该在前面加一个什么命令可以设置时间格式使之以适应文件名?
以上问题,请各位大侠帮忙;)

[ Last edited by liang666669 on 2007-5-30 at 10:39 PM ]

2007-5-30 22:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: