中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-30 09:57
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 请教:解压文件到虚拟内存盘关硬盘么事? 查看 2,223 回复 21
楼 主 请教:解压文件到虚拟内存盘关硬盘么事? 发表于 2006-06-02 17:28 ·  中国 河南 洛阳 涧西区 联通
银牌会员
★★★
积分 1,455
发帖 712
注册 2006-01-20 10:26
20年会员
UID 49246
状态 离线
列位看官及大侠:
在DOS下使用批处理命令将压缩的CAB文件解压到内存中虚拟的磁盘上时,与硬盘的状态(分区表错误、未格式化、非FAT32格式或无硬盘等等)有关系么?

问题的由来:
制作一启动盘,在硬盘为Fat32格式且已格式化状态下使用时,一切正常!但在摘除硬盘或硬盘未分区、未格式化、分区表错误等状态下,使用该启动盘可引导进入dos,虚拟内存盘也已建立,但本应在启动过程中解压到RAMD的文件(程序)未能解压。何解?
解压文件到内存还得看硬盘的脸色?又不是他(硬盘)家的地盘!

嘿嘿,不才困惑不已,还望各位点拨。

(可以肯定 autoexec.bat 文件绝无问题)
2 发表于 2006-06-02 18:13 ·  中国 上海 黄浦区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
未能解压的具体提示是什么
3 发表于 2006-06-02 18:56 ·  中国 广东 广州 番禺区 电信
中级用户
★★
积分 466
发帖 237
注册 2005-10-12 20:53
20年会员
UID 43413
状态 离线
看看路径有没有指向C盘
在看看path变量
4 发表于 2006-06-02 21:27 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
5 发表于 2006-06-02 22:40 ·  中国 河南 洛阳 涧西区 联通
银牌会员
★★★
积分 1,455
发帖 712
注册 2006-01-20 10:26
20年会员
UID 49246
状态 离线
首先感谢楼上三位大侠做答!
我前面已经申明, 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
------------------------------
6 发表于 2006-06-02 23:12 ·  中国 香港 环球全域电讯
初级用户
★★
积分 121
发帖 61
注册 2006-04-18 00:09
20年会员
UID 54007
性别 男
来自 HK
状态 离线
启动盘的物理格式是什么? 软盘或是光盘?
7 发表于 2006-06-02 23:38 ·  加拿大 Bell
系统支持
★★★★★★
“新DOS时代”站长
积分 27,736
发帖 10,521
注册 2002-10-09 12:00
23年会员
UID 9
状态 离线
EXTRACT命令在一些情况下需要临时用于解压的硬盘空间。
Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

8 发表于 2006-06-03 01:31 ·  中国 浙江 宁波 电信
中级用户
★★
积分 300
发帖 137
注册 2005-11-04 02:00
20年会员
UID 44559
性别 男
状态 离线
这还不是AUTOEXEC.BAT的事?问题就在于
set temp=c:\
set tmp=c:\
压缩率大的时候,解压时产生的临时文件存放路径指向了你所谓的"问题硬盘"C:\,当硬盘未格式化,分区表错误,或者在卸下硬盘而虚拟盘又过于小的情况下,就会出现此类问题.
9 发表于 2006-06-03 10:29 ·  中国 河南 洛阳 联通
银牌会员
★★★
积分 1,455
发帖 712
注册 2006-01-20 10:26
20年会员
UID 49246
状态 离线
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 ]
10 发表于 2006-06-03 19:28 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
如果将
set temp=c:\
set tmp=c:\
改为
set temp=%RAMD%
set tmp=%RAMD%
就会与硬盘无关了!
当然内存盘就要加大容量!
11 发表于 2006-06-03 20:57 ·  中国 河南 洛阳 涧西区 联通
银牌会员
★★★
积分 1,455
发帖 712
注册 2006-01-20 10:26
20年会员
UID 49246
状态 离线
嘿嘿,谢qwe1234567版主!又学了一招。
其实,如若不想与硬盘有关联的话,除了您介绍的方法外,适当控制压缩文件的压缩率即可(虽然,这个方法仅仅是试出来的,还有待理论上的支持) 。
之所以提出“解压文件到虚拟内存盘关硬盘么事”的问题,是想求解到底是什么在监控压缩文件的压缩率及其解压过程?是EXTRACT吗?如果是的话,不用EXTRACT是否就可以最大限度的压缩文件了?
还望大侠们继续点拨。
12 发表于 2006-06-05 15:44 ·  中国 河南 洛阳 涧西区 联通
银牌会员
★★★
积分 1,455
发帖 712
注册 2006-01-20 10:26
20年会员
UID 49246
状态 离线
顶一下!
请大侠们不吝赐教!
到底是什么在监控压缩文件的压缩率及其解压过程?是EXTRACT吗?若是的话,那么EXTRACT命令在何种情况下需要临时使用硬盘空间以用于解压?
13 发表于 2006-06-06 07:48 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
如果是自解压的话就可以不要任何的盘做临时文件和文件夹了!
“解压文件到虚拟内存盘关硬盘么事”是因为EXTRACT在解压时需要临时文件和临时文件夹!
14 发表于 2006-06-06 11:31 ·  中国 河南 洛阳 联通
银牌会员
★★★
积分 1,455
发帖 712
注册 2006-01-20 10:26
20年会员
UID 49246
状态 离线
qwe1234567版主 !
您介绍的两种方法都能很好的解决“关硬盘的事”的问题,非常感谢!

作为一个已经发生的问题,我很想搞清其原委,是故才不断的“纠缠”于.cab压缩格式及是何、为何“关硬盘的事”?但愿没有使您很烦。嘿嘿

从您及其他大侠的解说中我已知道EXTRACT在解压时需要临时文件和临时文件夹!但我还知道当压缩率较小时解压不“关硬盘的事”!有鉴于此,才产生了EXTRACT究竟是否存在监测.cab压缩文件压缩率的问题!换句话讲就是EXTRACT是否仅当压缩率大时才需借用临时文件夹、而压缩率小时则不必借用临时文件夹。因为从表象可以看到的确存在不同的压缩率其解压过程不同(压缩率大的文件解压时才“关硬盘的事”)。

上述问题的答案似乎是肯定的,但兄弟才疏学浅,是故恳请您及各位大侠予以明示。
15 发表于 2006-06-06 11:44 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
这个就不清楚了,我还没有遇到压缩率小时不必借用临时文件(夹)的事,无法给你解答!
论坛跳转: