中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-15 02:11
47,813 主题排行 / 349,902 发帖 / 今日 4 篇 / 48,257 会员排行
其它操作系统综合讨论区 » [原创]借助DevCon纯脚本备份驱动,兼容驱动精灵(2008-01-17)
可打印版本  82,482 / 72
第31楼 fastslz 发表于 2007-12-18 15:08
铂金会员 发帖 2,315 积分 5,493 来自 上海
关于重复备份能处理掉,但这样做效率低处理时间长,虽然是重复但备份的驱动文件很少出现重复的情况。
WHQL数字签名呢我是读取oem*.inf提取相应的.cat来弥补devcon的不足,而且最后把oem*.inf和oem*.cat改名成inf内容里相同的文件名,这样才能保证再次更新时WHQL数字签名是有效的,而驱动精灵只提取了cat文件没有把.inf改名成对应的文件名造成再次更新时WHQL数字签名是无效的,也就是驱动精灵最大的不足。
比如我的创新声卡inf内容是
; ECTIVA Audio 5.1 Series INF file
;
; Feature : Enhanced (WDM)
; Language : English
;
; Date : 12 Feb 2004
; Revision : 1.00.003
;
; Copyright 1995-2004, Creative Technology Ltd.


Signature="$CHICAGO$"
Class=MEDIA
ClassGUID={4d36e96c-e325-11ce-bfc1-08002be10318}
provider=%MfgName%
CatalogFile=ECTIVA.cat
DriverVer=02/12/2004,5.12.01.004


%MfgName%=ECTIVA


驱动安装后文件是以oem2.inf和oem2.cat保存在系统目录,备份好不改名成ECTIVA.inf和ECTIVA.cat,再次更新驱动时WHQL数字签名是无效的,驱动精灵只能做到oem2.inf和ECTIVA.cat

改名代码
for /f "tokens=1* delims== " %%k in ('type "%inf%"^|find /i ".cat"') do set oemname=%%~nl
if defined oemname for /f "delims=*" %%k in ('dir /s /b /a-d "%SystemRoot%\system32\CatRoot\%infname%.cat" 2^>nul') do set catfile=%%~k
if not defined catfile for /f "delims=*" %%k in ('dir /s /b /a-d "%SystemRoot%\%oemname%.cat" 2^>nul') do set catfile=%%k
if defined catfile (
set infname=%oemname%
xcopy /h /r /y "%catfile%" "drivers\%class%\%name%\*.*">nul 2>>%log%
if errorlevel 0 color 0e&&echo 含WHQL数字签名
attrib -s -h -r "drivers\%class%\%name%\%infname%.*">nul
move /y "drivers\%class%\%name%\%infname%.inf" "drivers\%class%\%name%\%oemname%.inf">nul 2>nul
move /y "drivers\%class%\%name%\%infname%.cat" "drivers\%class%\%name%\%oemname%.cat">nul 2>nul
)
for /f "delims= " %%i in ('devcon hwids %ID%^|sed -n "/Hardware ID's:/{n;p;}"') do echo "%infname%.inf"****"%%~i">>"drivers\HardwareID.log"
第32楼 pfox 发表于 2007-12-18 17:10
银牌会员 发帖 446 积分 1,451
Originally posted by fastslz at 2007-12-18 02:27 PM:


"drivers\PCI\Marvell Yukon Gigabit Ethernet 10_100_1000Base-T Adapter, Copper RJ-45\"文件名是合格的,这个驱动确实比较特殊,文件路径不对应说明该驱动也是未 ...



该驱动确实是使用setup.exe进行安装的,既然程序不存在问题那就暂时不管他了,回头我试一试驱动精灵看看备份是否正确。

看来是这个驱动比较特殊,驱动精灵备份的时候也无法备份该文件。

[ Last edited by pfox on 2007-12-18 at 05:19 PM ]
第33楼 qq43142691 发表于 2008-01-07 08:58
中级用户 发帖 152 积分 326
你们都是火星来了哇~~~~~
第34楼 regvip2008 发表于 2008-01-16 18:18
初级用户 发帖 87 积分 187
这些问题太深奥了,我是看不懂!不过,还是顶 一下!
第35楼 dooomer 发表于 2008-01-18 12:10
初级用户 发帖 52 积分 109
好东东,先顶一个。
第36楼 ttj36 发表于 2008-02-07 09:25
初级用户 发帖 37 积分 80
不错,老哥,这个批处太好用了,不过,基本里,好象打映机的备份不下来,
是不是还要加上USBPRINT这个,请大哥指点

[ Last edited by ttj36 on 2008-2-7 at 09:39 AM ]
第37楼 fastslz 发表于 2008-02-08 21:34
铂金会员 发帖 2,315 积分 5,493 来自 上海
Originally posted by ttj36 at 2008-2-7 09:25:
不错,老哥,这个批处太好用了,不过,基本里,好象打映机的备份不下来,
是不是还要加上USBPRINT这个,请大哥指点

[ Last edited by ttj36 on 2008-2-7 at 09:39 AM ]

for %%a in (PCI PCIIDE USB IDE DISPLAY USBPRINT) do (
......
第38楼 ttj36 发表于 2008-02-09 12:49
初级用户 发帖 37 积分 80
还是备份不下来,怎么回事,呀,是不是并口打印机驱动 Parport
USB打印机驱动 Usbprint 那怎么不好备份呢
刚刚看了一下,还要把打印机插上才能备份下来,怎么回事,应该可以备份的呀,

[ Last edited by ttj36 on 2008-2-9 at 01:10 PM ]
第39楼 fastslz 发表于 2008-02-09 20:03
铂金会员 发帖 2,315 积分 5,493 来自 上海
for %%a in (PCI PCIIDE USB IDE DISPLAY) do (
for /f "tokens=1* delims=: " %%b in ('devcon find %%a\*^|find "\"') do call :startcopy "@%%b" "%%c"
)

替换成
for /f "tokens=1* delims=: " %%b in ('devcon find *^|find "\"') do call :startcopy "@%%b" "%%c"
或范围更大点
for /f "tokens=1* delims=: " %%b in ('devcon findall *^|find "\"') do call :startcopy "@%%b" "%%c"
第40楼 ttj36 发表于 2008-02-09 20:08
初级用户 发帖 37 积分 80
我试试看,谢谢,
第41楼 ttj36 发表于 2008-02-09 20:19
初级用户 发帖 37 积分 80
我刚刚试过了改成for /f "tokens=1* delims=: " %%b in ('devcon find *^|find "\"') do echo "%%b"****"%% 驱动太多了,
我又改成了for /f "tokens=1* delims=: " %%b in ('devcon findall %%a\*^|find "\"') do echo "%%b"****"%%这样,备份下来多出了,4个驱动,
到,这样对不对,
第42楼 fastslz 发表于 2008-02-09 20:29
铂金会员 发帖 2,315 积分 5,493 来自 上海
Originally posted by ttj36 at 2008-2-9 20:19:
我刚刚试过了改成for /f "tokens=1* delims=: " %%b in ('devcon find *^|find "\"') do echo "%%b"****"%% 驱动太多了,
我又改成了for /f "tokens ...

看下Drivers\HardwareID.log对应打印机驱动的那一部分
第43楼 ttj36 发表于 2008-02-09 20:31
初级用户 发帖 37 积分 80
看了上面写,"hpf3500p.inf"****"USBPRINT\hpdeskjet_35007052"
for /f "tokens=1* delims=: " %%b in ('devcon findall %%a\*^|find "\"') do echo "%%b"****"%%看来只能这么搞,不知道对不对,

[ Last edited by ttj36 on 2008-2-9 at 08:37 PM ]
第44楼 fastslz 发表于 2008-02-09 20:52
铂金会员 发帖 2,315 积分 5,493 来自 上海
确实比较奇怪,按道理for %%a in (PCI PCIIDE USB IDE DISPLAY USBPRINT) do (
这样应该能正确识别打印机的,要不你再试试
for %%a in (PCI PCIIDE USB IDE DISPLAY USBPRINT) do (
for /f "tokens=1* delims=: " %%b in ('devcon find *%%a*^|find "\"') do echo "%%b"****"%%c">>"%Temp:"=%.\Devinfo.slz"
)

或者
for %%a in (PCI PCIIDE USB IDE DISPLAY USBPRINT) do (
for /f "tokens=1* delims=: " %%b in ('devcon find @%%a*^|find "\"') do echo "%%b"****"%%c">>"%Temp:"=%.\Devinfo.slz"
)


看看这2种兼容性更大,如果在不能正确识别,要增加代码了

[ Last edited by fastslz on 2008-2-9 at 08:55 PM ]
第45楼 ttj36 发表于 2008-02-09 21:03
初级用户 发帖 37 积分 80
第一个还是不行,
用第二,出是出来个不过好象不对,而且出错,

"1 matching device(s) found."
找不到文件 - monitor.inf

十在不行,就算了,把打映机插上就行了,就是搞不懂不插上打映机,就不好备份,

[ Last edited by ttj36 on 2008-2-9 at 09:13 PM ]
上一页  1 2 3 4 5  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023