免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 8020 | 回复: 10
打印 上一主题 下一主题

Windows下删除系统垃圾的脚本 [复制链接]

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-04-30 10:34 |只看该作者 |倒序浏览
前段时间寝室的个同胞,刚买电脑不久,然后让它用工具删系统垃圾都不会,实在没办法 用python给他写了个,当然只有最简单的功能

  1. #coding:utf-8
  2. import os
  3. #from glob import glob

  4. if os.name == 'nt':
  5.         if 'HOMEPATH' in os.environ:
  6.                 home = os.environ['HOMEDRIVE'] + os.environ['HOMEPATH']
  7.         else:
  8.                 home = os.environ['HOMEPATH']

  9. workpath = os.path.join(home,'Local Settings')
  10. #递归删除文件
  11. #里面和下面的函数用try是抛出删除正在使用的零时文件出错
  12. def delfile(path):
  13.         for file in os.listdir(path):     
  14.                 if os.path.isfile(os.path.join(path,file)):
  15.                         try:
  16.                                 print "\n删除垃圾文件: %s" % (os.path.join(path,file))
  17.                                 os.remove(os.path.join(path,file))
  18.                         except:
  19.                                 pass
  20.                 elif os.path.isdir(os.path.join(path,file)):
  21.                         delfile(os.path.join(path,file))
  22.                 else:
  23.                         pass
  24. delfile(os.path.join(workpath,'Temp'))
  25. delfile(os.path.join(workpath,'Temporary Internet Files'))
  26. #删除文件家的时候必须为空文件夹,而且只能从最里层删起
  27. def deldir(pa):
  28.         for i in os.listdir(pa):
  29.                 if os.path.isdir(os.path.join(pa,i)):
  30.                         if len(os.listdir(os.path.join(pa,i))) > 0:
  31.                                 deldir(os.path.join(pa,i))
  32.                                 try:
  33.                                         os.rmdir(os.path.join(pa,i))
  34.                                 except:
  35.                                         pass
  36.                         else:
  37.                                 try:
  38.                                         print "\n删除文件夹 %s" % (os.path.join(pa,i))
  39.                                         os.rmdir(os.path.join(pa,i))
  40.                                 except:
  41.                                         pass
  42.                
  43. deldir(os.path.join(workpath,'Temp'))
  44. deldir(os.path.join(workpath,'Temporary Internet Files'))
  45. print """
  46.      系统产生的零时垃圾文件清理完毕!
  47.      """
  48. raw_input("请按回车键退出!")

  49.                                
复制代码


然后用cx_freeze给他弄成了exe,让它电脑时间晚长了就双击一次

[ 本帖最后由 wolfg 于 2006-5-11 21:37 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-04-30 10:35 |只看该作者
呵呵,支持下

看来问题不怕解决不了,就怕发现不了问题。

论坛徽章:
0
3 [报告]
发表于 2006-04-30 17:47 |只看该作者
我觉得你删除文件夹的那几句很可笑

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
4 [报告]
发表于 2006-05-01 09:11 |只看该作者
楼上 有没有什么好点的办法!
其实我可以告诉你,windows底层的文件删除 原理 基本跟这个差不多
删除一个有文件的多级文件夹 先删掉文件,然后嘴从里层开始删除文件夹知道最外层。

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
5 [报告]
发表于 2006-05-01 09:17 |只看该作者
下面这个是在pywin的手册上找到的代码 一个关于删除文件夹的


  1. def del_dir(self,path):

  2.         for file in os.listdir(path):

  3.                 file_or_dir = os.path.join(path,file)

  4.                 if os.path.isdir(file_or_dir) and not os.path.islink(file_or_dir):

  5.                         del_dir(file_or_dir) #it's a directory reucursive call to function again

  6.                 else:

  7.                         try:

  8.                                 os.remove(file_or_dir) #it's a file, delete it

  9.                         except:

  10.                                 #probably failed because it is not a normal file

  11.                                 win32api.SetFileAttributes(file_or_dir, win32con.FILE_ATTRIBUTE_NORMAL)

  12.                                 os.remove(file_or_dir) #it's a file, delete it

  13.                 os.rmdir(path) #delete the directory here
复制代码

论坛徽章:
0
6 [报告]
发表于 2006-05-01 23:23 |只看该作者
为什么不换个方式? 比如用 os.system("rmdir dirpath /s /q")

当然我还是觉得你的方式稳妥,只是我喜欢最简练的

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
7 [报告]
发表于 2006-05-02 00:30 |只看该作者
那天也是实在没什么事,新闻业看完了,然后就想到写这个,当然方法很多的,如果想简单,其实用批处理都可以写的

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
8 [报告]
发表于 2006-05-05 20:21 |只看该作者
代码很累赘 改了下

  1. #coding=utf-8
  2. import os

  3. #得到系统的home目录例如'C:\\Documents and Settings\\Administrator'
  4. def gethome():
  5.         if os.name == 'nt':
  6.                 if 'HOMEPATH' in os.environ:
  7.                         home = os.environ['HOMEDRIVE'] + os.environ['HOMEPATH']
  8.                 else:
  9.                         home = os.environ['HOMEPATH']
  10.         return home

  11. def deldir(pa):
  12.         for file in os.listdir(pa):
  13.                 #如果是文件就删除
  14.                 file_or_dir = os.path.join(pa,file)
  15.                 if os.path.isfile(file_or_dir):
  16.                         try:
  17.                                 print "\n删除垃圾文件:  %s" % file_or_dir
  18.                                 os.remove(file_or_dir)
  19.                         except:
  20.                                 pass
  21.                
  22.                 elif os.path.isdir(file_or_dir):
  23.                         #如果是文件夹并且不为空递归删除,递归完后,就为空了所以回归删除目录
  24.                         if len(os.listdir(file_or_dir))>0:
  25.                                 deldir(file_or_dir)
  26.                                 try:
  27.                                         print "\n删除文件夹 %s" % file_or_dir
  28.                                         os.rmdir(file_or_dir)
  29.                                 except:
  30.                                         pass
  31.                         #其它的情况,如果目录为空直接删除目录
  32.                         else:
  33.                                 try:
  34.                                         print "\n删除文件夹 %s" % file_or_dir
  35.                                         os.rmdir(file_or_dir)
  36.                                 except:
  37.                                         pass
  38.                 else:
  39.                         pass

  40. if __name__=='__main__':
  41.         home = gethome()
  42.         workpath = os.path.join(home,'Local Settings')
  43.         deldir(os.path.join(workpath,'Temp'))
  44.         deldir(os.path.join(workpath,'Temporary Internet Files'))
  45.         #删除最近打开的文件记录历史
  46.         #delpaht(os.path.join(home,'Recent')
  47.         print """
  48.                         系统产生的零时垃圾文件清理完毕!
  49.                         """
  50.         raw_input("""请按回车键退出!""")
复制代码

[ 本帖最后由 ghostwwl 于 2006-5-8 19:39 编辑 ]

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
9 [报告]
发表于 2006-05-08 19:40 |只看该作者
才发现 那个代码贴上去的 里面我掉了一个括号 然后还打错了2个字母
嘿嘿 在家里的时候一直通不过 今天无意看到的

论坛徽章:
0
10 [报告]
发表于 2006-05-11 21:36 |只看该作者
试试os.walk方法

walk( top[, topdown=True [, onerror=None]])

manual里的例子,可供参考,注意它的注释里的提示

  1. # Delete everything reachable from the directory named in 'top',
  2. # assuming there are no symbolic links.
  3. # CAUTION:  This is dangerous!  For example, if top == '/', it
  4. # could delete all your disk files.
  5. import os
  6. for root, dirs, files in os.walk(top, topdown=False):
  7.     for name in files:
  8.         os.remove(os.path.join(root, name))
  9.     for name in dirs:
  10.         os.rmdir(os.path.join(root, name))
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP