多玩盒子战斗力-文件夹 加密
2023年3月30日发(作者:抖音时钟数字罗盘)
1/5
清理winsxs文件夹winsxs的文件夹位于Windows根目录,是一个超大的文
件仓库,系统所在分区几乎所有的系统文件都在那里至少有一个备份。
有兴趣的网友不妨通过搜索功能在winsxs搜一下公用视频、公用图片、公
用音乐文件夹里的文件,你会发现那些精简系统时已经被删除了的文件在
winsxs里还可以找到影子。
假如系统文件被删除或者破坏,用命令sfc/scannow就可以恢复,但如果将
winsxs里面的任何一个重要的组件删除,sfc命令就会失效。
系统在线更新的过程是旧版本文件被新版本的取代,旧文件自动备份在
winsxs里;卸载补丁的过程是系统新版本文件被旧版本的取代,而旧版本文件
的来源正是winsxs。
XP也有类似的功能,但XP下备份文件是可以直接删除的,Vista和Win7下
不行。
所以Vista和Win7占用的空间随着更新增多会越来越大,而且大得惊人。
winsxs里的文件非常重要,建议不要删除,以我长期的实践经验,暂时发
现只有ManifestCache和Temp两个文件夹里的缓存文件才可以安全删除。
特别提醒:
网上所有精简winsxs的方法都有一定的危险性(微软官方的工具除外),
例如“删除Backup文件夹或用空文件取代同名文件”,虽然它叫Backup,但里面
绝对不是备份文件而是关系到系统能否正常更新和正常“打开或关闭Windows功
能”的重要文件,某些大量被转载的文章都在误导人。
某软件提供删除Windows内置字体,帮助文件的方法,其实这对于精简系
统是没有任何意义的,字体和帮助文件在winsxs还有一个备份,两个相同的文
件共用一个储存空间,换句话说,删除前和删除后C盘可用空间不变!但是注
意,如果你查看文件或者文件夹的属性,他们都会占空间。
2/5
又如有人提出删除winsxs里同名文件较低版本的一个或几个,这是一个很
好的想法,但问题是有些同名文件的不同版本都有重要作用,都不能删除,例
如.NetFramework的相关组件。
winsxs的瘦身方法:
winsxs目录下的文件都是系统要用的各种库文件,system32下存放了这些
dll的最新的版本,所有老版本的dll都放在winsxs下。
所以只要你安装程序或者更新补丁,system32下的文件就会被更新,而同
时winsxs就会增加一些旧文件,所以我们的C盘空间就在持续不断地减少,直
到磁盘容量不够,被迫重装系统为止,如果你足够幸运,可以直接安装最新的
SP的话,或许可以为winsxs节约一点微薄的空间。
本工具的设计思想就是删除所有的旧文件。
所有满足如下全部条件的目录都会被移动C:
Windowswinsxs_del目录中。
工具源代码如下红色字体部分,请保存为.bat格式即可。
所有不再需要的文件会移动到c:
windowswinsxs_del目录中,可以直接进行删除。
执行时候,务必请使用“管理员”权限。
@echooffrem获取windows版本setmove_dir=%SystemRoot%winsxs_delif
notexist%move_dir%nulmd%move_dir%set
winver=noneFOR/F"eol=;tokens=4*delims=]"%%iin('ver')dosetwinver=%%iif
"%winver%"=="none"gotoenoverechowindowsversionis%winver%,readytolist
xist%SystemRoot%winsxsnulgotoenosxsset
ver_prefix=%winver:
3/5
~0,-1%echolistwinsxsfinished!nowreadytoclearduplicatedfilesechodir
/ad%SystemRoot%winsxs*_%ver_prefix%*if"%1"=="run-winsxs-generated"
goto:
lSkipGenrem准备生成代码copy/y"%~f0""%temp%%~nx0">nulechorem
generetedcodehere>>"%temp%%~nx0"echo:
ldcdStat1>>"%temp%%~nx0"echosetend4=%%arg:
%ver_prefix%=%%>>"%temp%%~nx0"echogotoldcdStat2>>
"%temp%%~nx0"echo:
ldcdStat3>>"%temp%%~nx0"echosetend4a=%%arg:
%winver%=%%>>"%temp%%~nx0"echogotoldcdStat4>>
"%temp%%~nx0"remnotepad"%temp%%~nx0""%temp%%~nx0"run-winsxs-
generatedgoto:
EOF:
lSkipGenFOR/F"eol=;tokens=1-
4delims="%%ain('dir/ad%SystemRoot%winsxs*_%ver_prefix%*')do(if"%%c"==
"
fnDoClear%%d)echoclearOK!goto:
EOF:
enoverechocouldnotgetwindowsversion,abort!goto:
EOF:
enosxsechonotfound%SystemRoot%winsxs!maybenoprivilegeorlowerwindows!
echoonlysupportwindowsXPandlater!goto:
EOF:
fnDoClearremarg:
4/5
dir_nameFOR/F"eol=;tokens=1-14delims=_"%%gin("%1")docall:
fnDoClearDir%1%%g%%h%%i%%j%%k%%l%%mn%%o%%p%%q%%r%%s%%t
%%u%%v%%w%%x%%y%%zgoto:
EOF:
fnDoClearDirremarg:
dir_namedir_partssetd_name=%1rem检查参数是否匹配%winver%,先跳过
前两个.同时准备组合新版本匹配名称,nv1存当前版本,nv2存当前的前一个版
本setnv1=%2_%3_setnv2=%2_%3_:
ldcdCycleif"%4"==""goto:
EOFrem检查是否ver_prefix开头,如果是则继续检查是否winver,如果不是
winver则表示目标存在setarg=%4remsetline=setend4=%%arg:
%ver_prefix%=%%rem%line%gotoldcdStat1:
ldcdStat2if"%arg%"=="%end4%"gotoldcdNextrem检查是否winver开头
remsetline=setend4a=%%arg:
%winver%=%%rem%line%gotoldcdStat3:
ldcdStat4ifnot"%arg%"=="%end4a%"goto:
EOFrem至此则为ver_prefix开头且不等于winver的目录名,检查最新版本是
否存在,存在则可删除旧的setnewfound=falsefor/d%%vin
("%SystemRoot%winsxs%nv1%%winver%.*_%5_*")do(ifexist%%vnulset
newfound=true)if"%newfound%"=="true"call:
fnDelDir%d_name%goto:
EOF:
ldcdNextsetnv2=%nv1%setnv1=%nv2%%4_shiftgotoldcdCycle:
fnDelDirremarg:
5/5
direchodel%SystemRoot%winsxs%1takeown/r/f
"%SystemRoot%winsxs%1"cacls"%SystemRoot%winsxs%1"/t/e/geveryone:
fmove"%SystemRoot%winsxs%1""%move_dir%%1"goto:
EOF说明:
以上内容为转载有删节。
上述红色字体为代码,经本人亲测可用,不过删除的内容有限,25%吧,主
要是有些文件名/扩展名太长了,无法删除。
但效果也相当可观,大家不凡试试看,真的不错。
更多推荐
backup文件夹
发布评论