|
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
状态 离线
|
|
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
状态 离线
|
|
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 |
|