中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS启动盘 & LOGO技术 (启动盘室) » 如何在批处理中自动识别启动盘符
作者:
标题: 如何在批处理中自动识别启动盘符 上一主题 | 下一主题
he1yi
新手上路





积分 8
发帖 3
注册 2007-4-11
状态 离线
『楼 主』:  如何在批处理中自动识别启动盘符

我们在做DOS启动盘时,有时是A盘,有时是C盘.是否能做一个通用的CONFIG.SYS 和Autoexec.bat文件适用两种情况呢?即无论是C盘还是A盘启动,这两个文件不变.各位大虾,求求了

2007-4-11 19:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 2 楼』:  

是A还是C,你需要变CONFIG.SYS 和Autoexec.bat吗?



Windows 一键还原
http://www.yjhy.com
2007-4-11 20:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
djlxue
新手上路





积分 2
发帖 1
注册 2006-10-12
状态 离线
『第 3 楼』:  

偶不会 帮不了你了

2007-4-12 04:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





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

Autoexec.bat文件前加上:
FOR %%a IN (A: C:) DO IF EXIST SET ud=%%a
试一下吧!

   此帖被 +1 点积分    点击查看详情   
评分人:【 he1yi 分数: +1  时间:2007-4-12 06:16


2007-4-12 06:04
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sunreak2008
初级用户





积分 26
发帖 13
注册 2006-8-29
状态 离线
『第 5 楼』:  

Autoexec.bat文件前加上:
FOR %%a IN (A: C:) DO IF EXIST SET ud=%%a
试一下吧!

请具体解释一下是什么意思好吗?

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





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

%ud%=你的盘符  变量的

2007-4-12 09:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
he1yi
新手上路





积分 8
发帖 3
注册 2007-4-11
状态 离线
『第 7 楼』:  

该命令语法不正确.不知道能否使用FOR %%a IN(A: C:) DO  CD|find /C/I "A:"
当无法将find的结果返回到Autoexec.bat中

2007-4-12 09:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 8 楼』:  

晕!
这么简单搞那么复杂干什么呀?
这是我的:

DOS=HIGH,UMB,AUTO
NUMLOCK=ON
device=\SYS\config.exe
device=\SYS\ConfigP.Mnu
; block=0
DEVICE=\SYS\MEM\HIMEM.SYS /TESTMEM:OFF
; block=1
DEVICE=\SYS\MEM\EMM386.exe noems
DEVICEHIGH=\SYS\MEM\QSCACHE.SYS /F /S7
; block=2
DEVICE=\SYS\MEM\UMBPCI.SYS /S
DEVICEHIGH=\SYS\MEM\QCACHE.SYS /L /S5
; block=3
DEVICE=\SYS\CD\GCDROM.SYS /D:SATA-CD
; block=4
DEVICE=\SYS\CD\vide-cdd.sys /d:PATA-CD
; block=5
DEVICE=\SYS\CD\QCDROM.sys /d:PATA-CD
; block=6
DEVICE=\SYS\USB\usbaspi.sys
; block=7
DEVICE=\SYS\USB\di1000dd.sys
; block=8
DEVICE=\SYS\USB\ASPIDISK.SYS
; block=9
DEVICE=\SYS\USB\USBCD.sys /d:USB-CD
; block=10
DEVICE=\SYS\USB\NJUSBCDA.sys /D:USB-CD
; block=11
DEVICE=\SYS\USB\UHCI.EXE
; block=12
DEVICE=\SYS\USB\OHCI.EXE
; block=end

FILESHIGH=100
BUFFERSHIGH=30,0
SHELL=COMMAND.COM /P /F /E:4096
FCBSHIGH=8,0
STACKSHIGH=18,512
LASTDRIVEHIGH=Z


AUTOEXEC:
@ECHO OFF
cls
rem pictview logo.sys --q --nocls
DEL logo.sys
SET DIRCMD=/OGN /4
SET PROMPT=$d $t$_$p$g
SET HDPMI=16384>NUL
SET RAMDRIVE=v:>NUL
XMSDSK 12288 %RAMDRIVE% /T /Y>NUL
PATH=%RAMDRIVE%;%RAMDRIVE%\BAT;%RAMDRIVE%\UCDOS;
COPY COMMAND.COM %RAMDRIVE%>NUL
SET COMSPEC=%RAMDRIVE%\COMMAND.COM
SET TEMP=%RAMDRIVE%\TEMP
IF EXIST LYM. REN LYM LYM.EXE
IF EXIST LYM.EXE  LYM /Y %RAMDRIVE%\>NUL
IF EXIST GHOST.EXE COPY GHOST.EXE %RAMDRIVE%>NUL
FOR %%X IN (LYM.EXE GHOST.EXE) DO IF EXIST %%X DEL %%X
echo 引导盘符>%temp%\YD.INI
cd>>%temp%\YD.INI
strings YD=read %temp%\YD.INI,2
strings YD=filedrive %YD%

PATH=%PATH%%YD%;
echo 内存盘符>%temp%\RAM.INI
echo %RAMDRIVE%>>%temp%\RAM.INI
CALL Drive.bat IFS %D3% %D4% %D5% %D6% %D7% %D8% %D9% %D10% %D11% %D12%
go %RAMDRIVE%\

CALL HZ.BAT

:TC

[ Last edited by 0451lym on 2007-4-12 at 10:19 AM ]

2007-4-12 10:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 9 楼』:  

2个上随便弄的,不是对应的,CO精简了,AU没整理!

2007-4-12 10:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 10 楼』:  

DOS基础没打好吧?
在CONFIG.SYS和AUTOEXEC.BAT中,不写路径不就行了?
启动到什么盘符,DOS就会到这个盘符下找的,不用你费心的,这两个文件中的语句中的程序名前也不用加的(但一定要放在根目录)

2007-4-12 10:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by GOTOmsdos at 2007-4-12 10:22:
DOS基础没打好吧?
在CONFIG.SYS和AUTOEXEC.BAT中,不写路径不就行了?
启动到什么盘符,DOS就会到这个盘符下找的,不用你费心的,这两个文件中的语句中的程序名前也不用加的(但一定要放在根目录)

呵呵,我的驱动什么的都放在A:\SYS里边了,所以需要读出A:来,不知道楼主是不是也是这个问题!

cd>>YD.INI
TYPE  YD.INI|FIND /I "A:">NUL
if errorlevel 1 SET YD=C:
if NOT errorlevel 1 SET YD=A:

理论是可行的,没测试!

[ Last edited by 0451lym on 2007-4-12 at 10:33 AM ]

2007-4-12 10:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 12 楼』:  

用相对路径就行了,不需盘符。



Windows 一键还原
http://www.yjhy.com
2007-4-12 10:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
GOTOmsdos
铂金会员

C++启程者


积分 5154
发帖 1827
注册 2003-7-18
状态 离线
『第 13 楼』:  

简单一句话:
不写盘符,就行了,你是A:\SYS\....,还是 C:\SYS\....
只要写SYS\.....就行了

2007-4-12 11:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
0451lym
高级用户





积分 760
发帖 357
注册 2005-10-10
状态 离线
『第 14 楼』:  

呵呵,我识别盘符是为了,随时后加驱动指定路径用的!
其实没什么大不了的,感觉驱动放到引导盘,程序放到内存盘好一些,反正也删不掉引导盘!(个人爱好)
其实不写盘符是最简单的办法了!

2007-4-12 11:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
he1yi
新手上路





积分 8
发帖 3
注册 2007-4-11
状态 离线
『第 15 楼』:  

非常感谢大家,我想应该可以试试吧

2007-4-14 06:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: