|
bc12060101
银牌会员
积分 1455
发帖 712
注册 2006-1-20
状态 离线
|
『楼 主』:
请教:解压文件到虚拟内存盘关硬盘么事?
列位看官及大侠:
在DOS下使用批处理命令将压缩的CAB文件解压到内存中虚拟的磁盘上时,与硬盘的状态(分区表错误、未格式化、非FAT32格式或无硬盘等等)有关系么?
问题的由来:
制作一启动盘,在硬盘为Fat32格式且已格式化状态下使用时,一切正常!但在摘除硬盘或硬盘未分区、未格式化、分区表错误等状态下,使用该启动盘可引导进入dos,虚拟内存盘也已建立,但本应在启动过程中解压到RAMD的文件(程序)未能解压。何解?
解压文件到内存还得看硬盘的脸色?又不是他(硬盘)家的地盘!
嘿嘿,不才困惑不已,还望各位点拨。
(可以肯定 autoexec.bat 文件绝无问题)
|
|
2006-6-2 17:28 |
|
|
DOSforever
金牌会员
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
|
2006-6-2 18:13 |
|
|
Scott0902
中级用户
积分 466
发帖 237
注册 2005-10-12
状态 离线
|
『第
3 楼』:
看看路径有没有指向C盘
在看看path变量
|
|
2006-6-2 18:56 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-6-2 21:27 |
|
|
bc12060101
银牌会员
积分 1455
发帖 712
注册 2006-1-20
状态 离线
|
『第
5 楼』:
首先感谢楼上三位大侠做答!
我前面已经申明, autoexec.bat 文件绝无问题,且在硬盘为Fat32格式且已格式化状态下使用时,一切正常!
经过测试发现,只需将压缩包的压缩率减小一些,在“问题硬盘”上不能解压的问题就消失了!
一个实例:将win98se原版启动盘内的ebd.cab文件解压后重新压缩(增大压缩比率)后装回原启动盘内,进行测试就出现我在前面叙述的问题:仅在“问题硬盘”时发生无法解压现象!将压缩比率减小再试,则又一切恢复正常。
从上面的事例我们可以看到,似乎压缩文件的压缩率与硬盘存在某种“关系”,到底是何“关系”呢?还望大侠们指点迷津。
附上win98启动盘的autoexec.bat 及setramd.bat文件
autoexec.bat
---------------------
@ECHO OFF
set EXPAND=YES
SET DIRCMD=/O:N
set LglDrv=27 * 26 Z 25 Y 24 X 23 W 22 V 21 U 20 T 19 S 18 R 17 Q 16 P 15
set LglDrv=%LglDrv% O 14 N 13 M 12 L 11 K 10 J 9 I 8 H 7 G 6 F 5 E 4 D 3 C
cls
call setramd.bat %LglDrv%
set temp=c:\
set tmp=c:\
path=%RAMD%:\;a:\;%CDROM%:\
copy command.com %RAMD%:\ > NUL
set comspec=%RAMD%:\command.com
copy extract.exe %RAMD%:\ > NUL
copy readme.txt %RAMD%:\ > NUL
:ERROR
IF EXIST ebd.cab GOTO EXT
echo Please insert Windows 98 Startup Disk 2
echo.
pause
GOTO ERROR
:EXT
%RAMD%:\extract /y /e /l %RAMD%: ebd.cab > NUL
echo The diagnostic tools were successfully loaded to drive %RAMD%.
echo.
IF "%config%"=="NOCD" GOTO QUIT
IF "%config%"=="HELP" GOTO HELP
LH %ramd%:\MSCDEX.EXE /D:mscd001 /L:%CDROM%
echo.
GOTO QUIT
:HELP
cls
call help.bat
echo Your computer will now restart and the startup menu will appear.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
echo.
restart.com
GOTO QUIT
:QUIT
echo To get help, type HELP and press ENTER.
echo.
rem clean up environment variables
set CDROM=
set LglDrv=
--------------------------
setramd.bat
---------------------------
@echo off
set RAMD=
set CDROM=
echo.
echo Preparing to start your computer.
echo This may take a few minutes. Please wait...
echo.
a:\findramd
if errorlevel 255 goto no_ramdrive
if not errorlevel 3 goto no_ramdrive
goto do_shift
:loop
if errorlevel %1 goto no_shift
:do_shift
set cdrom=%2
shift
shift
if not %1*==* goto loop
goto no_ramdrive
:no_shift
set ramd=%2
if "%RAMD%"=="C" goto c_drive
goto success
:c_drive
echo Windows 98 has detected that drive C does not contain a valid FAT or
echo FAT32 partition. There are several possible causes.
echo.
echo 1. The drive may need to be partitioned. To create a partition on the drive,
echo run FDISK from the MS-DOS command prompt.
echo.
echo 2. You may be using third-party disk-partitioning software. If you are using
echo this type of software, remove the Emergency Boot Disk and restart your
echo computer. Then, follow the on-screen instructions to start your computer from
echo a floppy disk.
echo .
echo 3. Some viruses also cause your drive C to not register. You can use a virus
echo scanning program to check your computer for viruses.
echo.
goto success
:no_ramdrive
echo The Windows 98 startup disk could not create a temporary drive for the
echo diagnostic tools. This may be because this computer has less than the
echo minimum required extended memory.
echo.
:success
------------------------------
|
|
2006-6-2 22:40 |
|
|
tsenix
初级用户
积分 121
发帖 61
注册 2006-4-18 来自 HK
状态 离线
|
『第
6 楼』:
启动盘的物理格式是什么? 软盘或是光盘?
|
|
2006-6-2 23:12 |
|
|
Wengier
系统支持
“新DOS时代”站长
积分 27734
发帖 10521
注册 2002-10-9
状态 离线
|
『第
7 楼』:
EXTRACT命令在一些情况下需要临时用于解压的硬盘空间。
|
Wengier - 新DOS时代
欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/
E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)
|
|
2006-6-2 23:38 |
|
|
zjnbwdj
中级用户
积分 300
发帖 137
注册 2005-11-4
状态 离线
|
『第
8 楼』:
这还不是AUTOEXEC.BAT的事?问题就在于
set temp=c:\
set tmp=c:\
压缩率大的时候,解压时产生的临时文件存放路径指向了你所谓的"问题硬盘"C:\,当硬盘未格式化,分区表错误,或者在卸下硬盘而虚拟盘又过于小的情况下,就会出现此类问题.
|
|
2006-6-3 01:31 |
|
|
bc12060101
银牌会员
积分 1455
发帖 712
注册 2006-1-20
状态 离线
|
『第
9 楼』:
to 7楼&8楼:
谢两位仁兄指点!
请问EXTRACT命令在何种情况下“需要临时用于解压的硬盘空间”,若如8楼老兄所言“压缩率大的时候,............”,那么又是什么在检测文件的压缩比率并将解压路径指向temp?是EXTRACT吗?
zjnbwdj兄,兄弟不才,对于AUTOEXEC.BAT中的 set temp=c:\ 及 set tmp=c:\ 一直不解,经您指点,好像离明白已经不远了。
to 6楼老兄:
软盘及光盘均存在此问题!
[ Last edited by bc12060101 on 2006-6-3 at 10:34 ]
|
|
2006-6-3 10:29 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-6-3 19:28 |
|
|
bc12060101
银牌会员
积分 1455
发帖 712
注册 2006-1-20
状态 离线
|
『第
11 楼』:
嘿嘿,谢qwe1234567版主!又学了一招。
其实,如若不想与硬盘有关联的话,除了您介绍的方法外,适当控制压缩文件的压缩率即可(虽然,这个方法仅仅是试出来的,还有待理论上的支持) 。
之所以提出“解压文件到虚拟内存盘关硬盘么事”的问题,是想求解到底是什么在监控压缩文件的压缩率及其解压过程?是EXTRACT吗?如果是的话,不用EXTRACT是否就可以最大限度的压缩文件了?
还望大侠们继续点拨。
|
|
2006-6-3 20:57 |
|
|
bc12060101
银牌会员
积分 1455
发帖 712
注册 2006-1-20
状态 离线
|
『第
12 楼』:
顶一下!
请大侠们不吝赐教!
到底是什么在监控压缩文件的压缩率及其解压过程?是EXTRACT吗?若是的话,那么EXTRACT命令在何种情况下需要临时使用硬盘空间以用于解压?
|
|
2006-6-5 15:44 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-6-6 07:48 |
|
|
bc12060101
银牌会员
积分 1455
发帖 712
注册 2006-1-20
状态 离线
|
『第
14 楼』:
qwe1234567版主 !
您介绍的两种方法都能很好的解决“关硬盘的事”的问题,非常感谢!
作为一个已经发生的问题,我很想搞清其原委,是故才不断的“纠缠”于.cab压缩格式及是何、为何“关硬盘的事”?但愿没有使您很烦。嘿嘿
从您及其他大侠的解说中我已知道EXTRACT在解压时需要临时文件和临时文件夹!但我还知道当压缩率较小时解压不“关硬盘的事”!有鉴于此,才产生了EXTRACT究竟是否存在监测.cab压缩文件压缩率的问题!换句话讲就是EXTRACT是否仅当压缩率大时才需借用临时文件夹、而压缩率小时则不必借用临时文件夹。因为从表象可以看到的确存在不同的压缩率其解压过程不同(压缩率大的文件解压时才“关硬盘的事”)。
上述问题的答案似乎是肯定的,但兄弟才疏学浅,是故恳请您及各位大侠予以明示。
|
|
2006-6-6 11:31 |
|
|
不得不爱
超级版主
我爱DOS
积分 5310
发帖 2044
注册 2005-9-26 来自 四川南充
状态 离线
|
|
2006-6-6 11:44 |
|