中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-28 05:04
中国DOS联盟论坛 » 其它操作系统综合讨论区 » [原创]借助DevCon纯脚本备份驱动,兼容驱动精灵(2008-01-17) 查看 81,550 回复 72
31 发表于 2007-12-18 15:08 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
关于重复备份能处理掉,但这样做效率低处理时间长,虽然是重复但备份的驱动文件很少出现重复的情况。
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 发表于 2007-12-18 17:10 ·  中国 广东 汕头 电信
银牌会员
★★★
积分 1,451
发帖 446
注册 2002-10-20 00:00
23年会员
UID 29
性别 男
状态 离线
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 发表于 2008-01-07 08:58 ·  中国 广东 东莞 电信
中级用户
★★
积分 326
发帖 152
注册 2007-05-04 06:16
19年会员
UID 87412
性别 男
状态 离线
你们都是火星来了哇~~~~~
34 发表于 2008-01-16 18:18 ·  中国 湖南 长沙 电信
初级用户
★★
积分 187
发帖 87
注册 2007-10-23 16:04
18年会员
UID 100558
性别 男
状态 离线
这些问题太深奥了,我是看不懂!不过,还是顶 一下!
35 发表于 2008-01-18 12:10 ·  中国 浙江 温州 乐清市 电信
初级用户
★★
积分 109
发帖 52
注册 2006-01-03 22:47
20年会员
UID 48392
状态 离线
好东东,先顶一个。
36 发表于 2008-02-07 09:25 ·  中国 江苏 南通 中移铁通
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
不错,老哥,这个批处太好用了,不过,基本里,好象打映机的备份不下来,
是不是还要加上USBPRINT这个,请大哥指点

[ Last edited by ttj36 on 2008-2-7 at 09:39 AM ]
37 发表于 2008-02-08 21:34 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
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 发表于 2008-02-09 12:49 ·  中国 江苏 南通 中移铁通
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
还是备份不下来,怎么回事,呀,是不是并口打印机驱动 Parport
USB打印机驱动 Usbprint 那怎么不好备份呢
刚刚看了一下,还要把打印机插上才能备份下来,怎么回事,应该可以备份的呀,

[ Last edited by ttj36 on 2008-2-9 at 01:10 PM ]
39 发表于 2008-02-09 20:03 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
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 发表于 2008-02-09 20:08 ·  中国 江苏 扬州 邗江区 中移铁通
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
我试试看,谢谢,
41 发表于 2008-02-09 20:19 ·  中国 江苏 扬州 邗江区 中移铁通
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
我刚刚试过了改成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 发表于 2008-02-09 20:29 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
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 发表于 2008-02-09 20:31 ·  中国 江苏 扬州 邗江区 中移铁通
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
看了上面写,"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 发表于 2008-02-09 20:52 ·  中国 上海 松江区 电信
铂金会员
★★★★
DOS一根葱
积分 5,493
发帖 2,315
注册 2006-05-01 10:41
20年会员
UID 54766
性别 男
来自 上海
状态 离线
确实比较奇怪,按道理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 发表于 2008-02-09 21:03 ·  中国 江苏 扬州 邗江区 中移铁通
初级用户
积分 80
发帖 37
注册 2008-02-06 18:34
18年会员
UID 110292
性别 男
状态 离线
第一个还是不行,
用第二,出是出来个不过好象不对,而且出错,

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

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

[ Last edited by ttj36 on 2008-2-9 at 09:13 PM ]
论坛跳转: