无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 2976|回复: 10
打印 上一主题 下一主题

[求助] 从补丁文件获取系统版本,怎么只取最后一个值?(已解决)

[复制链接]
1#
发表于 2022-3-13 19:37:33 来自手机 | 显示全部楼层
遍历完了自动就是最后一个值,for执行很快的。

话说,最好将if移出来。记得版本号貌似可以直接if判断
回复

使用道具 举报

2#
发表于 2022-3-13 20:50:55 来自手机 | 显示全部楼层
那你这不叫取最后一个值,这叫取最大值
回复

使用道具 举报

3#
发表于 2022-3-13 21:57:45 | 显示全部楼层
本帖最后由 nttwqz 于 2022-3-13 23:58 编辑
窄口牛 发表于 2022-3-13 20:54
dir就排序了,最大的肯定是最后一个(每个分区的)。


总感觉之前为谁写过,忘记了。

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (
  4.     if exist %%i:\windows\winsxs (
  5.         if defined oslist (
  6.             set "oslist=!oslist! %%i"
  7.         ) else (
  8.             set "oslist=%%i"
  9.         )
  10.         for /f "tokens=4 delims=_" %%a in ('dir /b /d %%i:\windows\winsxs\*_microsoft-windows-servicingstack_31bf3856ad364e35_* /on^|find "serv"') do (
  11.             set "winver_%%i=%%a"
  12.         )
  13.     )
  14. )

  15. if defined oslist for %%a in (!oslist!) do (
  16.     for %%b in (!winver_%%a!) do (
  17.         echo;%%a    %%b
  18.     )
  19. )
  20. pause
复制代码
回复

使用道具 举报

4#
发表于 2022-3-13 22:38:51 来自手机 | 显示全部楼层
窄口牛 发表于 2022-3-13 22:35
不对,这就成了最后一个分区的最大补丁得值了,把其它分区的都丢了。看得我头晕,改都不会改。

你试过了?

我这单系统不便测试。。。
回复

使用道具 举报

5#
发表于 2022-3-14 00:00:14 来自手机 | 显示全部楼层
有个地方复制粘贴错了,已经改正。。。
回复

使用道具 举报

6#
发表于 2022-3-14 10:29:26 来自手机 | 显示全部楼层
本帖最后由 nttwqz 于 2022-3-14 10:42 编辑
窄口牛 发表于 2022-3-14 07:19
可以了。for一套就晕了。应该没有写过,这种判断方法未见有人公开过。

  1. for %%a in (c d e) do (
  2.     echo %%a
  3.     for %%a in (1 2 3) do echo %%a
  4. )
  5. pause
复制代码



这么写,估计你能看明白,for是从外到内,从c开始会将do后面()内的执行一遍,然后是d,再将do后面()内的执行一遍,最后是e,即使是用了相同的变量%%a也是如此。文本文件也是如此,是一行文本do后面()的就会执行一遍,并不是一行代码将整个文本遍历一遍,然后再第二行代码。

遇到嵌套的for,从c开始这个嵌套for执行完再d,最后是e。如过是三重嵌套,那就是c,1,第三重for;d,2,第三重for。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-5-15 12:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表