无忧启动论坛

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

[求助] wmic的环境在批处理里怎么退出?

[复制链接]
跳转到指定楼层
1#
发表于 2017-7-4 16:18:38 来自手机 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
调用它以后,怎么退出它的环境,却不影响批处理继续工作?
2#
 楼主| 发表于 2017-7-4 16:41:24 来自手机 | 显示全部楼层
echo.quit|wmic这种格式呢,有群友提示,我回去试试。
回复

使用道具 举报

3#
 楼主| 发表于 2017-7-4 18:18:20 来自手机 | 显示全部楼层
嗯,后续的命令就会执行不了,比如字符串对比,就会提示获取字符串失败。
回复

使用道具 举报

4#
 楼主| 发表于 2017-7-5 09:16:37 来自手机 | 显示全部楼层
有办法吗?
回复

使用道具 举报

5#
 楼主| 发表于 2017-7-8 18:45:40 来自手机 | 显示全部楼层
但是后面的命令都执行失败了。
回复

使用道具 举报

6#
 楼主| 发表于 2017-7-8 18:54:59 | 显示全部楼层
  1. @echo off
  2. del list.log /q
  3. dir *-kb*.msu /b /o:n >a.txt
  4. wmic qfe get hotfixid >>1.tx
  5. tfor /f "delims=^- tokens=1,*" %%a in (1.txt) do (echo %%a>>2.txt)
  6. del 1.txt /q
  7. for /f "delims=^_ tokens=1,*" %%a in (2.txt) do (echo %%a>>b.txt)
  8. del 2.txt /q
  9. findstr /V /I /G:b.txt a.txt > c.txt && move /y c.txt list.log
  10. del *.txt
  11. for /f "eol=o eol=O " %%j in (list.log) do echo 正在安装补丁%%j && start /wait wusa %%j /quiet /norestart
复制代码


比如这个

点评

最近右臂摔了一下,骨裂了,回帖不便。 原因已经找到,WMIC输出的文本默认为unicode格式,而for默认是无法读取这种文本的,可以通过type 1.txt实现,或者将wmic结果用findstr处理一下再输出(建议只保留KB开头的  详情 回复 发表于 2017-7-15 20:18
回复

使用道具 举报

7#
 楼主| 发表于 2017-7-15 22:11:13 来自手机 | 显示全部楼层
谢谢,好好养伤,愿早日康复。
回复

使用道具 举报

8#
 楼主| 发表于 2017-7-17 10:07:13 | 显示全部楼层
本帖最后由 窄口牛 于 2017-7-17 10:25 编辑
  1. @echo off
  2. del list.log /q
  3. dir *-kb*.exe /b /o:n >7.txt
  4. For %%a in (7.txt) Do Type %%a >a.txt
  5. del 7.txt /q
  6. wmic qfe get hotfixid >>8.txt
  7. For %%a in (8.txt) Do Type %%a >6.txt
  8. del 8.txt /q
  9. findstr /i "kb" 6.txt>>1.txt
  10. del 6.txt
  11. ::for /f "tokens=2" %%a in ('systeminfo^|findstr /i "kb"') do echo %%a>>1.txt
  12. for /f "delims=^- tokens=1,*" %%a in (1.txt) do (echo %%a>>2.txt)
  13. del 1.txt /q
  14. for /f "delims=^_ tokens=1,*" %%a in (2.txt) do (echo %%a>>b.txt)
  15. del 2.txt /q
  16. findstr /V /I /G:b.txt a.txt > c.txt && move /y c.txt list.log
  17. del *.txt
复制代码

又凑了几句进去前部分没问题了
筛选(findstr /V /I /G:b.txt a.txt > c.txt && move /y c.txt list.log)又失效了
回复

使用道具 举报

9#
 楼主| 发表于 2017-7-17 15:25:42 | 显示全部楼层
最终测试这样可以顺利筛选
  1. @echo off
  2. pushd %~dp0\
  3. del list.log /q 2>nul
  4. dir *-kb*.exe /b /o:n >a.txt
  5. for /f %%a in ('wmic qfe get hotfixid ^| findstr /i "^KB"') do echo %%a>>1.txt
  6. ::for /f "tokens=2" %%a in ('systeminfo^|findstr /i "kb"') do echo %%a>>1.txt
  7. for /f "tokens=1 delims=-_" %%i in (1.txt) do echo %%i>>b.txt
  8. findstr /V /I /G:b.txt a.txt > c.txt && move /y c.txt list.log
  9. pause
  10. del *.txt
  11. for /f "eol=o eol=O " %%j in (list.log) do echo 正在安装补丁%%j && %%j /quiet /norestart
复制代码

不知道为什么简化后和我之前的就筛选失败
回复

使用道具 举报

10#
 楼主| 发表于 2017-7-17 19:05:24 来自手机 | 显示全部楼层
原因不明,我这确实不行,无奈。

点评

回显开,在cmd中执行一下批处理排除一下错误  详情 回复 发表于 2017-7-17 21:56
回复

使用道具 举报

11#
 楼主| 发表于 2017-7-18 07:48:40 | 显示全部楼层


无错误提示
回复

使用道具 举报

12#
 楼主| 发表于 2017-7-18 16:08:06 来自手机 | 显示全部楼层
我测试的共13个补丁,正确应该是筛留2个补丁需要打,错误的筛留多与两个,因具体数字没记住,所以只用多于两个来描述。

点评

人工对比下a.txt b.txt,看多出来的有哪里不一样……  详情 回复 发表于 2017-7-18 16:19
回复

使用道具 举报

13#
 楼主| 发表于 2017-7-18 16:51:37 来自手机 | 显示全部楼层
本帖最后由 窄口牛 于 2017-7-18 16:58 编辑

我测试的正确的就是两个。
a.txt
  1. IE8-WindowsXP-KB2964358-x86-custom-CHS.exe
  2. ie8-windowsxp-kb4018271-x86-custom-chs_4e41e3f3c9af0222e158d86aecf64fbfb0c9b48d.exe
  3. WindowsXP-KB2483618-x86-CHS.exe
  4. WindowsXP-KB2813345-x86-CHS.exe
  5. WindowsXP-KB2859537-x86-CHS.exe
  6. WindowsXP-KB4012583-x86-Custom-CHS.exe
  7. windowsxp-kb4012598-x86-custom-chs_dca9b5adddad778cfd4b7349ff54b51677f36775.exe
  8. WindowsXP-KB4018466-x86-Custom-CHS.exe
  9. WindowsXP-KB4019204-x86-Custom-CHS.exe
  10. WindowsXP-KB4022747-x86-Custom-CHS.exe
  11. WindowsXP-KB4024323-x86-Custom-CHS.exe
  12. WindowsXP-KB4024402-x86-Custom-CHS.exe
  13. WindowsXP-KB4025218-x86-Custom-CHS.exe
复制代码

正确筛选list.og
  1. WindowsXP-KB2483618-x86-CHS.exe
  2. WindowsXP-KB2813345-x86-CHS.exe
复制代码

错误筛选list.log
  1. WindowsXP-KB2483618-x86-CHS.exe
  2. WindowsXP-KB2813345-x86-CHS.exe
  3. WindowsXP-KB2859537-x86-CHS.exe
  4. WindowsXP-KB4012583-x86-Custom-CHS.exe
  5. windowsxp-kb4012598-x86-custom-chs_dca9b5adddad778cfd4b7349ff54b51677f36775.exe
  6. WindowsXP-KB4018466-x86-Custom-CHS.exe
  7. WindowsXP-KB4019204-x86-Custom-CHS.exe
  8. WindowsXP-KB4022747-x86-Custom-CHS.exe
  9. WindowsXP-KB4024323-x86-Custom-CHS.exe
  10. WindowsXP-KB4024402-x86-Custom-CHS.exe
  11. WindowsXP-KB4025218-x86-Custom-CHS.exe
复制代码

只筛掉了两个ie8的补丁
回复

使用道具 举报

14#
 楼主| 发表于 2017-7-18 18:05:01 | 显示全部楼层
b.txt

b.rar

2.83 KB, 下载次数: 3

点评

原因已经找到,wmic输出每个补丁名称后面有很多空格(除了有-_),文件名没有空格,所以只需将分隔符由“-_”改为“-_ ”即可,就是加了个空格  详情 回复 发表于 2017-7-18 18:32
回复

使用道具 举报

15#
 楼主| 发表于 2017-7-18 18:47:56 来自手机 | 显示全部楼层
完美!nt6不存在这个问题。大师好认真,硬硬的找到了问题所在,佩服!
回复

使用道具 举报

16#
 楼主| 发表于 2017-7-29 15:16:03 来自手机 | 显示全部楼层
不错,谢谢分享!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-3 02:09

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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