多玩盒子战斗力-文件夹 加密

backup文件夹
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"==

"

"call:

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文件夹