<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      清理winsxs的小工具

      因?yàn)榇疟P空間不夠了,所以想起來清理一下系統(tǒng)垃圾文件,主要目標(biāo)就是臭名昭著的winsxs目錄。這個winsxs就是微軟為了解決“dll hell”問題,結(jié)果是好比在windows系統(tǒng)里安置了一個毫無節(jié)制不斷增大的“腫瘤”。聽說微軟研究院現(xiàn)在在研究這個問題,不過我想我的硬盤空間不夠大,等不到這個補(bǔ)丁出來的時候,所以只好自己動手了。

      winsxs目錄下的文件都是系統(tǒng)要用的各種庫文件,system32下存放了這些dll的最新的版本,所有老版本的dll都放在winsxs下。所以只要你安裝程序或者更新補(bǔ)丁,system32下的文件就會被更新,而同時winsxs就會增加一些舊文件,所以我們的C盤空間就在持續(xù)不斷地減少,直到磁盤容量不夠,被迫重裝系統(tǒng)為止,如果你足夠幸運(yùn),可以直接安裝最新的SP的話,或許可以為winsxs節(jié)約一點(diǎn)微薄的空間。

      winsxs目錄下的不同版本文件都存放在特定命名規(guī)則的目錄下,比如

      C:\Windows\winsxs>dir msil_microsoft.transactions.bridge.resources*
      驅(qū)動器 C 中的卷是 vista
      卷的序列號是 989F-EFF3

      C:\Windows\winsxs 的目錄

      msil_microsoft.transactions.bridge.resources_b03f5f7f11d50a3a_6.0.6000.16386_zh-cn_1cde5a17d78fb5ec
      msil_microsoft.transactions.bridge.resources_b03f5f7f11d50a3a_6.0.6000.16716_zh-cn_1cd75781d79605cf
      msil_microsoft.transactions.bridge.resources_b03f5f7f11d50a3a_6.0.6000.20876_zh-cn_060fb27df137fddf
      msil_microsoft.transactions.bridge.resources_b03f5f7f11d50a3a_6.0.6001.18000_zh-cn_1cb2dbd3d7e75eb8
      msil_microsoft.transactions.bridge.resources_b03f5f7f11d50a3a_6.0.6001.18106_zh-cn_1cb252ffd7e7f8cf
      msil_microsoft.transactions.bridge.resources_b03f5f7f11d50a3a_6.0.6001.22221_zh-cn_05e71ebbf18d0b5e
      msil_microsoft.transactions.bridge.resources_b03f5f7f11d50a3a_6.0.6002.18005_zh-cn_1c8e610fd838f2cc
                     0 個文件              0 字節(jié)
                     7 個目錄  5,382,139,904 可用字節(jié)

      這里的各個部分用下劃線分割,其中我們關(guān)注的是“6.0.6000.16386”部分,它表示舊文件的版本號,之前則是唯一文件標(biāo)識,之后是語言,最后部分是散列值(防止名字沖突)。

      本工具的設(shè)計(jì)思想就是刪除所有的舊文件。所有滿足如下全部條件的目錄都會被移動到C:\Windows\winsxs_del目錄中。

      1. 存在比自身更新的版本
      2. 本身不是最新版本

      運(yùn)行工具前的C盤剩余空間:

           所列文件總數(shù):
                  4473 個文件  3,336,376,627 字節(jié)
                  7655 個目錄    326,840,320 可用字節(jié)

      C:\Windows\winsxs_del>

       

      運(yùn)行工具并且執(zhí)行命令

      for /d %v in (%SystemRoot%\winsxs_del\*.*) do rd /s /q %v

      刪除所有可以刪除的無用文件之后的剩余空間:

           所列文件總數(shù):
                    52 個文件      7,555,048 字節(jié)
                   131 個目錄  5,383,979,008 可用字節(jié)

      C:\Windows\winsxs_del>

       

      工具源代碼如下:請保存為winsxs_clear.bat即可。所有不再需要的文件會移動到c:\windows\winsxs_del目錄中,可以直接進(jìn)行刪除。

      執(zhí)行時候,務(wù)必請使用“管理員”權(quán)限。

      1@echo off
      2rem 獲取windows版本
      3set move_dir=%SystemRoot%\winsxs_del
      4if not exist %move_dir%\nul md %move_dir%
      5set winver=none
      6FOR /F "eol=; tokens=4* delims=] " %%i in ('ver') do set winver=%%i
      7if "%winver%" == "none" goto enover
      8echo windows version is %winver%, ready to list winsxs dir.
      9if not exist %SystemRoot%\winsxs\nul goto enosxs
      10
      11set ver_prefix=%winver:~0,-1%
      12echo list winsxs finished! now ready to clear duplicated files 
      13echo dir /ad %SystemRoot%\winsxs\*_%ver_prefix%*
      14
      15if "%1" == "run-winsxs-generated" goto :lSkipGen
      16rem 準(zhǔn)備生成代碼
      17copy /y "%~f0" "%temp%\%~nx0" > nul
      18echo rem genereted code here >> "%temp%\%~nx0"
      19echo :ldcdStat1 >> "%temp%\%~nx0"
      20echo set end4=%%arg:%ver_prefix%=%%>> "%temp%\%~nx0"
      21echo goto ldcdStat2 >> "%temp%\%~nx0"
      22echo :ldcdStat3 >> "%temp%\%~nx0"
      23echo set end4a=%%arg:%winver%=%%>> "%temp%\%~nx0"
      24echo goto ldcdStat4 >> "%temp%\%~nx0"
      25rem notepad "%temp%\%~nx0"
      26"%temp%\%~nx0" run-winsxs-generated
      27goto :EOF
      28
      29:lSkipGen
      30FOR /F "eol=; tokens=1-4 delims= " %%a in ('dir /ad %SystemRoot%\winsxs\*_%ver_prefix%*') do (
      31    if "%%c" == "<DIR>" call:fnDoClear %%d
      32)
      33
      34echo clear OK!
      35goto :EOF
      36
      37:enover
      38echo could not get windows version, abort!
      39goto :EOF
      40
      41:enosxs
      42echo not found %SystemRoot%\winsxs! maybe no privilege or lower windows!
      43echo only support windows XP and later!
      44goto :EOF
      45
      46:fnDoClear
      47rem arg: dir_name
      48FOR /F "eol=; tokens=1-14 delims=_" %%g in ("%1") do call:fnDoClearDir %1 %%g %%h %%i %%j %%k %%l %%m %%n %%o %%p %%q %%r %%s %%t %%u %%v %%w %%x %%y %%z
      49goto :EOF
      50
      51:fnDoClearDir 
      52rem arg: dir_name dir_parts
      53set d_name=%1
      54rem 檢查參數(shù)是否匹配 %winver%, 先跳過前兩個.同時準(zhǔn)備組合新版本匹配名稱,nv1存當(dāng)前版本,nv2存當(dāng)前的前一個版本
      55set nv1=%2_%3_
      56set nv2=%2_%3_
      57:ldcdCycle
      58if "%4" == "" goto :EOF
      59rem 檢查是否 ver_prefix 開頭,如果是則繼續(xù)檢查是否winver,如果不是winver則表示目標(biāo)存在
      60set arg=%4
      61rem set line=set end4=%%arg:%ver_prefix%=%%
      62rem %line%
      63goto ldcdStat1
      64:ldcdStat2
      65if "%arg%" == "%end4%" goto ldcdNext
      66rem 檢查是否 winver 開頭
      67rem set line=set end4a=%%arg:%winver%=%%
      68rem %line%
      69goto ldcdStat3
      70:ldcdStat4
      71if not "%arg%" == "%end4a%" goto :EOF
      72rem 至此則為 ver_prefix 開頭 且 不等于 winver 的目錄名,檢查最新版本是否存在,存在則可刪除舊的
      73set newfound=false
      74for /d %%v in ("%SystemRoot%\winsxs\%nv1%%winver%.*_%5_*") do (
      75    if exist %%v\nul set newfound=true
      76)   
      77if "%newfound%" == "true" call:fnDelDir %d_name%
      78
      79goto :EOF
      80:ldcdNext
      81set nv2=%nv1%
      82set nv1=%nv2%%4_
      83shift
      84goto ldcdCycle
      85
      86:fnDelDir
      87rem arg: dir
      88echo del %SystemRoot%\winsxs\%1
      89takeown /r /f "%SystemRoot%\winsxs\%1"
      90cacls "%SystemRoot%\winsxs\%1" /t /e /g everyone:f
      91move "%SystemRoot%\winsxs\%1" "%move_dir%\%1"
      92goto :EOF
      93
      94

       

      代碼導(dǎo)讀有助于大家理解程序和算法,但是基本的批處理語法就不講了,有幾年編程經(jīng)驗(yàn)的我想也看得懂。以下是大致幾個要注意的地方:

      1. 代碼的開頭部分是用ver命令獲取系統(tǒng)的版本號,并且存放到%winver%變量中,比如我的ver命令返回就是“Microsoft Windows [版本 6.0.6002]”,為了獲取這個“6.0.6002”,所以要做一些處理,另外,%ver_prefix%中存放的是類似“6.0.600”,為了比較舊版本號用途。
      2. 因?yàn)榕幚頍o法實(shí)現(xiàn)嵌套嵌入功能,比如我想把從目錄中分解出來的6.0.6000.16386和%ver_prefix%進(jìn)行比較,就無法實(shí)現(xiàn)了,只好用代碼生成大法來處理,在18~24行就是生成代碼,該代碼在63行和69行調(diào)用。26行負(fù)責(zé)把控制轉(zhuǎn)移到新生成的文件中執(zhí)行。
      3. 因?yàn)閣insxs目錄是有特殊權(quán)限的,所以先用takeown命令設(shè)置當(dāng)前用戶為擁有者,然后用cacls修改目錄權(quán)限,最后用move指令將目錄轉(zhuǎn)移到winsxs_del目錄中。如果出現(xiàn)程序無法運(yùn)行的情況,請手工移動回去即可。

      posted on 2009-09-30 21:21  老翅寒暑  閱讀(124306)  評論(18)    收藏  舉報(bào)

      導(dǎo)航

      主站蜘蛛池模板: 国产成人亚洲综合图区| 丁香五月婷激情综合第九色 | 国产精品毛片一区二区| 久久精品夜夜夜夜夜久久| 亚欧美闷骚院| 久久天天躁狠狠躁夜夜avapp| 人妻人人澡人人添人人爽| 精品人妻少妇嫩草av系列| 一区二区三区国产偷拍| 亚洲精品一区二区动漫| 精品熟女少妇免费久久| 一区一区三区产品乱码| 亚洲国产精品成人综合色在| 精品91在线| 久热这里只有精品视频六| 调兵山市| 国产精品亚洲二区在线播放| 强奷乱码中文字幕| CAOPORN免费视频国产| 蜜臀视频一区二区在线播放| 亚洲综合无码一区二区| 91亚洲国产成人久久精| 国产一区二区日韩经典| 国产午夜福利大片免费看| 久久人妻无码一区二区| 色综合久久久久综合99| 日韩国产成人精品视频| 97精品尹人久久大香线蕉| 国产精品久久久久久久专区| 国产一区二区三区免费观看| 成人午夜在线观看刺激| 中文幕无线码中文字夫妻| 久久中文字幕国产精品| 久久午夜无码鲁丝片直播午夜精品| 久久久久久久久久久国产| 亚洲中文字幕第二十三页| 成人性生交大片免费看r老牛网站| 九色综合国产一区二区三区| 国产成人精品中文字幕| 日本成熟少妇激情视频免费看| 色综合激情丁香七月色综合|