由于各种原因,Windows
的系统文件或字体文件丢失,造成系统出现运行故障。这时最快的解决办法就是从
Windows 的安装盘上找出原文件,拷贝回来,使系统恢复正常。以前笔者经常使用以下两种方法:
一、通过
Windows 的 LAYOUT.INF、LAYOUT1.INF、LAYOUT2.INF
三个文件进行查找。这三个文件存在于
Windows 安装后的 \Windows\Inf 路径下,包含着
Windows 有关文件的安装信息。我们以查找
winipcfg.exe 文件为例:首先用文本编辑器依次打开上述三个文件,查找字符串“winipcfg.exe”。本例中,我们会在
LAYOUT1.INF 中查到“winipcfg.exe=9,,53248”的一串信息。数字
9 表示 winipcfg.exe 文件包含在
Windows 的 9 号安装包中,53248
是其字节数大小。于是我们在
Windows 的安装盘上找到 9 号包
NET9.CAB,鼠标双击,Windows 就会用自带的解压工具或
Winzip 打开该压缩包,从中可以找到我们需要的
winipcfg.exe 文件。Windows 的安装包其文件名前缀有
PRECOPY、CATALOG、BASE、NET、DRIVER、WIN98_
等,后面紧跟着 1、2、3……73
等包的顺序号。
二、使用
Windows 的 EXT.EXE 程序自动查找。这是
Windows 的一个 DOS 应用程序,可以在
Windows98 的启动盘上直接找到,也可以用
Extract.exe 从
\Windows\Command\Ebd\EBD.CAB 文件中解压缩得到。运行
EXT.EXE 程序需要在同一目录下存在
Extract.exe 文件。运行 EXT.EXE 后,程序首先会问
Windows 的安装文件存放在哪个路径下:
Please enter the path to the Windows CAB files
(a:) :
然后要求输入要查找的文件名:
Please enter the name(s) of the file(s) you want to extract:
最后要求输入文件解开后放在哪个目录中(默认是当前目录):
Please enter the path to extract to ("Enter" for current
directory):
以上问题回答完毕,按
Yes 确认后,EXT.EXE 程序会自动从
Windows 安装目录的安装包中查找指定的文件,找到后会自动解出存放到指定目录下。
但是,不知什么原因,使用以上两种方法,有时却不能找到指定的文件,虽然文件确实包含在压缩包里。后来,笔者发现
Extract.exe 文件本身具有从
*.cab 压缩包里自动查找指定文件的功能,命令格式是:
Extract /a /l <解出文件存放目录>
<Windows *.cab文件路径\起始cab文件>
<要查找的文件名>
只要指定了上述命令行参数,Extract
就会从起始文件开始,按包的顺序号,由小到大依次读取包文件,自动查找文件。但它读取
*.cab 文件是“分段”的,不是全部读完。经过笔者的测试,有以下规律(见表格):
起始 cab文件 |
读取的文件 |
备 注 |
Chl99.cab |
Chl99.cab |
只读取 Chl99.cab文件一个文件 |
Mini.cab |
Mini.cab, Mini1.cab |
只读取 Mini.cab,Mini1.cab
两个文件 |
Precopy1.cab |
Precopyx.cab x=1-3 |
只读取 Precopyx.cab 三个文件 |
Catalog4.cab |
Catalog4.cab x=4
Basex.cab x=5-6
Netx.cab x=7-10
Driverx.cab x=11-22
Win98_x.cab x=23-73
|
读到最后一个包
|
Base5.cab |
Basex.cab x=5-6
Netx.cab x=7-10
Driverx.cab x=11-22
Win98_x.cab x=23-73
|
读到最后一个包 |
Net7.cab |
Netx.cab x=7-10
Driverx.cab x=11-22
Win98_x.cab x=23-73
|
读到最后一个包 |
Driver8.cab |
Driverx.cab x=11-22
Win98_x.cab x=23-73
|
读到最后一个包 |
Win98_x.cab |
Win98_x.cab x=23-73 |
读到最后一个包 |
也就是说,分别从 Chl99.cab、Mini.cab、Precopy1.cab、Catalog4.cab
开始,就可以将所有的压缩包浏览完。于是,很自然的想到了批处理,于是编写了一个批处理文件
Findcabs.bat,完满地解决了问题(批处理文件见后)。批处理文件的命令格式为:
Findcabs <*.cab 所在路径>
<要查找的文件名>
运行时当前目录下要有
Extract.exe文件。运行后会将找到的文件存放到当前目录,并给出提示信息。这样以来,就不会有哪个要查找的文件漏网了。如果读者朋友有更好的方法,请
Email:zhangking@263.net 联系。
@echo off
if "%1"= ="" goto Prompt
if "%2"= ="" goto Prompt
extract /a /y /l . %1\chl99.cab %2>nul
extract /a /y /l . %1\mini.cab %2>nul
extract /a /y /l . %1\precopy1.cab %2>nul
extract /a /y /l . %1\catalog4.cab %2>nul
if exist %2 goto Ok
echo.
echo Can't find this file.
echo.
goto End
:Ok
echo.
echo OK!
echo.
goto End
:Prompt
echo.
echo Usage: findcabs {directory with *.cab}
{filename to find}
echo.
:End
以上三种方法笔者在 Windows98 第一版中验证。由于
Windows 系列版本其打包方法基本相同,所以读者完全可以在
Windows 的其它版本中借鉴使用。
张庆 Email: zhangking@263.net
2001.1.3
|
|