[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 关于筛选winsxs中版本号较低的文件夹的批处理

由于无法在原创贴发布,所以发到这里
该批处理是一年前开发的,当时共开发了三个版本
最终有一个版本是比较成功的
至于运行原理,现在忘了,现献上代码供大家讨论试用
由于不清楚winsxs里的深度详细机理,所以只把扫描到的东西放到del.txt
为了运行成功,建议用已管理员身份运行
  1. @echo off
  2. mode con:cols=80 lines=5
  3. setlocal enabledelayedexpansion
  4. set scan=
  5. set found=0
  6. for /f %%a in ('dir %windir%\winsxs\*/ad/b') do (
  7.    set folder=%%a
  8.    set folder=!folder:_= !
  9.    set keyword1=
  10.    set keyword2=
  11.    set keyword3=
  12.    set keyword4=
  13.    for %%b in (!folder!) do (
  14.       if "!keyword4!"=="" (
  15.         set keyword4=!keyword3!) else (
  16.         set keyword4=!keyword4!_!keyword3!)
  17.       set keyword3=!keyword2!
  18.       set keyword2=!keyword1!
  19.       set keyword1=%%b)
  20.    if defined keyword4 (
  21.      for %%b in (version!keyword2!) do (
  22.         if "!keyword4!"=="!keyword!" (
  23.           if "!%%b!"=="" (
  24.             set language=!language! !keyword2!
  25.             set %%b=!keyword3!) else (
  26.             set flag=
  27.             set partnow=!keyword3:.= !
  28.             set partnew=!%%b!
  29.             for %%c in (!partnow!) do (
  30.                if "!flag!"=="" (
  31.                  for /f "tokens=1* delims=." %%d in ("!partnew!") do (
  32.                     if  %%c lss %%d set flag=0&set/a found+=1
  33.                     if  %%c gtr %%d set flag=1&set/a found+=1
  34.                     set partnew=%%e)))
  35.             if "!flag!"=="0" echo %%a>>%~dp0del.txt
  36.             if "!flag!"=="1" (
  37.               echo !keyword4!_!%%b!_!keyword2!_!keyword1!>>%~dp0del.txt
  38.               set %%b=!keyword3!))) else (
  39.           for %%c in (!language!) do set version%%c=
  40.           set language=!keyword2!
  41.           set %%b=!keyword3!
  42.           set keyword=!keyword4!)))
  43.    set/a scan+=1
  44.    cls
  45.    echo 已找到/扫描数:!found!/!scan!
  46.    echo 正在扫描:%windir%\winsxs\%%a)
  47. cls
  48. echo 已找到/扫描数:!found!/!scan!
  49. echo 扫描完毕!
  50. pause>nul
复制代码

返回列表