中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 帮忙简化安装系统补丁P处理 上一主题 | 下一主题
bbq123bbq
初级用户




积分 197
发帖 77
注册 2006-9-19
状态 离线
『楼 主』:  帮忙简化安装系统补丁P处理

for /f "delims=." %%i in (2.txt) do echo %%i >>3.txt && findstr /v/g:1.txt 3.txt >>4.txt
for /f %%j in (4.txt) do echo %%j.exe >>5.bat

2.TXT为所有系统补丁号码
KB898461.exe
KB893803.exe
KB900930.exe

1.TXT为本机补丁号码
KB898461
KB893803

先讲2.TXT内KB898461.EXE的后缀名.EXE去掉输出为2.txt for /f "delims=." %%i in (2.txt) do echo

%%i >>3.txt

对比1.TXT和3.TXT..将1.TXT和2.TXT内有的相同补丁号码去掉..输出4.TXT
将4.TXT内补丁号码甜加后缀名输出5.BAT  for /f %%j in (4.txt) do echo %%j.exe /quiet

/norestart /n >>5.bat
在运行5.BAT安装系统补丁
初步测试成功不过写的太长..请高手简化一下给点意见

2007-2-4 12:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 2 楼』:  

就按照你的脚本方式,已经是很简化了,临时文件稍多点而已

2007-2-4 12:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bbq123bbq
初级用户




积分 197
发帖 77
注册 2006-9-19
状态 离线
『第 3 楼』:  

我知道我没把临时文件删除...哪个好做所以我没做..我只做个大纲...还有个问题:的出5.BAT内容:
KB893803.exe
KB898461.exe
KB900930.exe
KB887797.exe
KB885836.exe
KB873339.exe
KB888113.exe
读取内容一行一行树着显示里面的内容,最好相隔2秒好给人知道需要安装那些系统补丁

2007-2-4 12:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 4 楼』:  

RE bbq123bbq
你写的代码真的挺简短的,不过有些凌乱,要我做的话可能会这样完成,可以参考一下。

  Quote:

  1. @echo off
  2. for /f "delims=" %%i in (2.txt) do (
  3.         findstr /x "%%~ni" 1.txt >nul
  4.         if ERRORLEVEL 1 (
  5.                 echo 安装 %%~ni
  6.                 %%i /quiet /norestart /n
  7.                 echo %%~ni>>1.txt
  8.         )
  9. )
        无奈何发表于    2007-02-04  01:42





  ☆开始\运行 (WIN+R)☆
%ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul

2007-2-4 14:47
查看资料  发送邮件  发短消息 网志  OICQ (105400208)  编辑帖子  回复  引用回复
bbq123bbq
初级用户




积分 197
发帖 77
注册 2006-9-19
状态 离线
『第 5 楼』:  

比我的好..不过有些地方不懂? findstr /x 打印完全匹配的行 用来对比"%%~ni" 1.txt 出来的结果和1.TXT匹配的补丁号码 , if ERRORLEVEL 1 是什么意思..echo 安装 %%~ni 显示矿充2.TXT里的文件名 %%i /quiet /norestart /n 安装2.TXT里的补丁
整段运行为什么只安装1.TXT里缺少而2.TXT里有的补丁
可以解释一下吗??我去掉@echo 看过运行过程还是不懂....

2007-2-4 16:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zerocq
中级用户




积分 458
发帖 196
注册 2006-10-5
状态 离线
『第 6 楼』:  

for /f "delims=." %a in (2.txt) do @findstr /x %a 1.txt||%.exe /quiet /norestart /n

这样可以不,读取2.txt里的每一行在1.txt里查找,没找到就运行这个补丁???

2007-2-4 20:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 7 楼』:  

findstr /v/g:1.txt 3.txt
这句是不是对比1和3中的文件,把不同的输出到4中?

2007-2-4 22:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bbq123bbq
初级用户




积分 197
发帖 77
注册 2006-9-19
状态 离线
『第 8 楼』:  

终于明白if ERRORLEVEL 1 意思..IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的 if ERRORLEVEL 1 代表返回不成功 if ERRORLEVEL 0 代表返回成功...

2007-2-5 08:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
anqing
高级用户




积分 859
发帖 413
注册 2006-8-14
状态 离线
『第 9 楼』:  

我也学习了,以前一直写成if ERRORLEVEL ==1
看来以后可以少写两个=号了

2007-2-5 09:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: