中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]如何判断笔记本的型号并分配驱动
« [1] [2] »
作者:
标题: [已解决]如何判断笔记本的型号并分配驱动 上一主题 | 下一主题
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『楼 主』:  [已解决]如何判断笔记本的型号并分配驱动

我是多个vaio本本群的管理员,因为vaio本本的特殊性,在驱动方面有很多难题,我们群就是无偿提供vaio驱动和本本解决方案的个人性质的群,因为现在的本本都预装了vista,很多人在改装XP的时候遇到了问题,我们手头上有解决的方案,所以想做一个ghost xp for vaio给网上的朋友使用,让大家可以一键就装好所有驱动和软件

在驱动封装的时候我遇到了难题,研究了十多天了,我想在驱动提前解压时候用批处理做一个判断,判断本本的型号并分配驱动,我的批处理思路如下
先提前解压所有驱动至C:\drivers文件夹(有所有本本的驱动)(这一步由封装工具实现,不在批处理内容里),批处理内容如下

1...用systeminfo命令输出一个1.txt的文件,里面有本本的型号,以VGN开头,比如VGN-FE48C(此字符串前后均有空格)
2...用findstr查找这个输出的1.txt,找到VGN-开头的字符串,得到VGN-后面的字符串,比如FE48C
3...将此FE48C的字符串告诉这个批处理,批处理能自动删除drivers文件夹中除FE48C这个型号以外的所有驱动,于是此时drivers文件夹里只剩下FE48C的驱动


只要实现以上后面的我就知道怎么做了,问了很多封装的高手都没能有一个好的解决方案,这已经是我能想出来的最现实的解决型号判断和驱动分配的办法了

我们群加起来一共有一两千人,建立一年多,从来没有收过网上用vaio本本的朋友一分一毫,以后也只会做无偿服务,群里确实没有这方面的技术人才,我自己本身没什么技术底子,就凭一股热情,既然决定要做个xp for vaio就一定要做出来,纯粹是为了帮助更多的人,也希望高手能帮帮我,我的联系QQ是48191335,希望能提供技术帮助的人联系我(注明:DOS联盟)...有任何疑问请回贴..谢谢

[ Last edited by bjsh on 2007-7-31 at 03:10 PM ]

2007-6-9 00:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 2 楼』:  

最好发个输出的1.txt内容

2007-6-9 01:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『第 3 楼』:  

systeminfo >1.txt (没有使用systeminfo的任何参数)


主机名:           vincent
OS 名称:          Microsoft Windows XP Professional
OS 版本:          5.1.2600 Service Pack 2 Build 2600
OS 制造商:        Microsoft Corporation
OS 配置:          独立工作站
OS 构件类型:      Uniprocessor Free
产品 ID:          76481-640-2449187-23845
初始安装日期:     2006-9-12, 20:00:19
系统启动时间:     暂缺
系统制造商:       Sony Corporation
系统型号:         VGN-TX15C_W

系统类型:         X86-based PC
处理器:           安装了 1 个处理器。
                  [01]: x86 Family 6 Model 13 Stepping 8 GenuineIntel ~997 Mhz
BIOS 版本:        Sony - 20050805

[ Last edited by xiaofking on 2007-6-9 at 04:44 PM ]

2007-6-9 13:41
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 4 楼』:  

VGN-TX15C_W系统类型
是不是要TX15C?_W系统类型  这里的_是不是一定有?

2007-6-9 14:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『第 5 楼』:  

没错 _ 是一定存在的,VGN也是一定存在的,VGN_后面的就是型号,型号的后面是空格,VGN-TX15C_W的前面是"系统型号:         ",后面就直接换行了
也可以用systeminfo的参数使C_W后面不换行直接产生空格

[ Last edited by xiaofking on 2007-6-9 at 03:40 PM ]

2007-6-9 15:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『第 6 楼』:  

我看了很多贴子,好像这个对我的需求还是有一定帮助的,但我确实看不懂,希望给你看看有点用



如何读取文本内<a>至<a/> 之间的字符串?
@echo off & SETLOCAL EnableDelayedExpansion

set _TxtFile=1.txt
set _OutFile=2.txt
set _GetLine=init
set _GetChar=init

:main
        for /f "Tokens=* " %%i in (%_TxtFile%) do (
                set _GetLine=%%i
                call :READINFILE
                echo ^<!_OutLine!^>
                )
goto :END
:READINFILE
set ReadFlag=true
        for /l %%i in (0,1,255) do (
                set _GetChar=!_GetLine:~%%i,1!
                if "!_GetChar!"=="" goto :EOF
                if "!_GetChar!"=="<" set ReadFlag=false
                if "!ReadFlag!"=="true" set _OutLine=!_OutLine!!_GetChar!
                if "!_GetChar!"==">" set ReadFlag=true

                )
        goto :EOF
:END

pause


2007-6-9 15:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『第 7 楼』:  

我用systeminfo /fo table>1.txt输出了一个table格式的文本,里面是这样子的,没有换行的

Sony Corporation               VGN-TX15C_W          X86-based PC

上面三个是在同一行的,sony本本自然肯定有Sony Corporation这个字符串,我想是不是可以这样想,在1.txt中查找Sony Corporation,当找到后向前进15个字符(Sony Corporation后面有15个空格),然后从第16个字符开始获取,也就是从"V"开始一直向后获取字符,当再次碰到"空格符"的时候便Pause,这样就能获得整个型号的字符串了,这种想法可以吗?

2007-6-9 15:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 8 楼』:  

你想得到VGN-TX15C_W 里面的TX15C_W  还是得到整个VGN-TX15C_W  还是TX15C?

2007-6-9 15:57
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 9 楼』:  

for /f "tokens=1,2,3 delims=-_ " %%i in ('findstr TX"VGN" 1.txt') do (
echo %%k
)  根据3楼  提取的TX15C

2007-6-9 16:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『第 10 楼』:  

最好是得到整个VGN-TX15C_W,否则的话至少要得到TX15C_W

[ Last edited by xiaofking on 2007-6-9 at 04:45 PM ]

2007-6-9 16:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 11 楼』:  

7楼的字符 用下面:
for /f "tokens=1,2,3, delims= " %%i in ('findstr "VGN" 1.txt') do (
echo %%k
)

2007-6-9 16:53
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wudixin96
银牌会员





积分 1928
发帖 931
注册 2007-1-6
状态 离线
『第 12 楼』:  


for /f "tokens=2" %%i in ('findstr "VGN" 1.txt') do echo %%i


2007-6-9 16:58
查看资料  发短消息 网志   编辑帖子  回复  引用回复
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『第 13 楼』:  

12楼的wudixin96非常正确...直接输出了VGN-TX15C_W

现在只剩下问题3了..

3...将此VGN-TX15C_W的字符串告诉这个批处理,批处理能自动删除drivers文件夹中除VGN-TX15C_W这个型号以外的所有驱动,于是此时drivers文件夹里只剩下VGN-TX15C_W的驱动

谢谢terse和wudixin96,帮到底好吗...

[ Last edited by xiaofking on 2007-6-9 at 05:08 PM ]

2007-6-9 17:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 14 楼』:  

驱动全名后缀贴上

2007-6-9 17:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
xiaofking
初级用户





积分 72
发帖 31
注册 2007-6-9
状态 离线
『第 15 楼』:  

C:\dirvers文件夹里有"NV1"  "NV2"  "Realtek1" "Realtek2" "modem1" "modem2"......等等文件夹,文件夹内均是inf安装形式的,不是setup安装的exe(驱动类型可能会有十几种,包括读卡器指纹等等...)

首先定义TX15C_W所需的驱动是"NV1"   "Realtek2"  "modem2".....(在批处理的开头可能要先定义所有的型号,即定义某型号分别需要哪些驱动)
从1.txt中得到TX15C_W这个型号后批处理自动删除此型号以外的所有驱动,也就是说除了"NV1"   "Realtek2"  "modem2"....以外的全部删除,这样drivers文件夹里就只剩下跟TX15C_W有关的驱动了...
这样就行了


或者我的驱动文件夹也可以是如下情况 (其中TX15,FE38,SZ32都是机器型号)

文件夹:NV_TX15_SZ32
文件夹:NV_FE38_FE48
文件夹:Modem_TX15_FE38_SZ32
文件夹:Realtek_TX15_TX25
文件夹:Realtek_FE38_SZ32


[ Last edited by xiaofking on 2007-6-9 at 05:57 PM ]

2007-6-9 17:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: