楼 主
在DOS7.1中,用什么方法把”cd“输出内容赋予变量中?
发表于 2006-08-10 11:04 · 中国 广东 东莞 电信
中级用户
★★
积分 387 发帖 104 注册 2004-11-19 00:00 21年会员 UID 33813 性别 男
状态 离线
刚启动DOS7.1,无外部命令。
想通过“CD”得到刚启动后的盘符。并赋予变量中。
注:因为是镜像文件,不能创建文件。
[ Last edited by zts59 on 2006-8-10 at 11:06 ]
第 2 楼
发表于 2006-08-10 21:16 · 中国 广东 东莞 电信
中级用户
★★
积分 387 发帖 104 注册 2004-11-19 00:00 21年会员 UID 33813 性别 男
状态 离线
无解吗??
只有不通过CD来得到盘符了,呵呵,用%comspec%了
第 3 楼
发表于 2006-08-11 10:35 · 中国 上海 普陀区 电信
银牌会员
★★★
永遠的DOS~~~
积分 1,200 发帖 466 注册 2005-02-01 00:00 21年会员 UID 35867 性别 男 来自 上海
状态 离线
exit | %comspec% /Q /K prompt set a=$n > a.bat
call a.bat
第 4 楼
发表于 2006-08-11 13:37 · 中国 广东 东莞 电信
中级用户
★★
积分 387 发帖 104 注册 2004-11-19 00:00 21年会员 UID 33813 性别 男
状态 离线
谢谢楼上的,
不过有点问题,变量A并没有得到当前盘符。
所以我用了
if %comspec%==C:\COMMAND.COM goto next|set bootp=C:
if %comspec%==A:\COMMAND.COM goto next|set bootp=A:
第 5 楼
发表于 2006-08-11 14:09 · 中国 上海 普陀区 电信
银牌会员
★★★
永遠的DOS~~~
积分 1,200 发帖 466 注册 2005-02-01 00:00 21年会员 UID 35867 性别 男 来自 上海
状态 离线
Originally posted by zts59 at 2006-8-11 01:37 PM:
谢谢楼上的,
不过有点问题,变量A并没有得到当前盘符。
所以我用了
if %comspec%==C:\COMMAND.COM goto next|set bootp=C:
if %comspec%==A:\COMMAND.COM goto next|set boot ...
它得到的是盘符的字母。如果后面要加“:”可以改成:
exit | %comspec% /Q /K prompt set a=$n: > a.bat
call a.bat
如果把上述“$n”改为“$p”则得到当前路径。
第 6 楼
发表于 2006-08-11 18:41 · 中国 广东 东莞 电信
中级用户
★★
积分 387 发帖 104 注册 2004-11-19 00:00 21年会员 UID 33813 性别 男
状态 离线
不对吧,不知道这么朋友有没有测试,
/Q 参数不存在 难道是我的DOS7.1有问题?
把/Q去掉后运行,其实没有得到变量A 而是把提示符变成了 set a=C
因为不能建立文件,也有输出到A.bat是不行的。
其实你不用调用A.bat 你用echo %a%看看结果吧
[ Last edited by zts59 on 2006-8-11 at 18:54 ]
第 7 楼
发表于 2006-08-11 20:39 · 中国 上海 普陀区 电信
银牌会员
★★★
永遠的DOS~~~
积分 1,200 发帖 466 注册 2005-02-01 00:00 21年会员 UID 35867 性别 男 来自 上海
状态 离线
我知道了
MSDOS 7.1的Command.com没有/Q参数,而照上面执行后%a%变量多出一个“exit”
试试这样吧:
echo @prompt @set a=$n: >a.bat
%comspec% /c a.bat >b.bat
call b.bat
del a.bat
del b.bat
我在VPC中测试成功。但是在cmd下测试没通过。但是5楼的方法在cmd下能通过。但是这两种方法在FreeDOS的FreeCOM下都不能成功,不知什么原因。
[ Last edited by brglng on 2006-8-11 at 20:56 ]
第 8 楼
发表于 2006-08-11 21:04 · 中国 广东 东莞 电信
中级用户
★★
积分 387 发帖 104 注册 2004-11-19 00:00 21年会员 UID 33813 性别 男
状态 离线
谢谢了,
其实你还建立了两个批处理,因为是镜像文件,不能产生文件的,是不能写入的。
这样的话,我还要考滤要加载内存虚拟盘,然后用上述代码。不可合理哟。
况且如果可以写入文件的话,用:
cd\
cd>aa.txt
就可以了,
要知道DOS启动的话,不是在A盘,就是在C盘。所用 if %comspec%=……
就最简单了。
也谢谢你的方法,给了另一种思路。
[ Last edited by zts59 on 2006-8-11 at 21:07 ]
第 9 楼
发表于 2007-01-14 09:21 · 中国 广东 湛江 电信
初级用户
★
积分 61 发帖 33 注册 2007-01-13 03:02 19年会员 UID 76342 性别 男
状态 离线
说明一下,对于镜像软盘 并非不能写文件,而是要镜像盘还有空闲空间,另外,如果关机前没有把新生成文件转存到硬盘,关机后就会“消失”——因为镜像软盘中的文件是存 在 内存中 的。
论坛跳转:
— 请选择 —
站务公告 & 版主讨论
意见反馈 & 网友交流
DOS学习入门 & 精彩文章 (教学室)
DOS疑难解答 & 问题讨论 (解答室)
DOS启动盘 & LOGO技术 (启动盘室)
DOS批处理 & 脚本技术(批处理室)
DOS媒体世界 & 网络技术 (多媒体室)
DOS汉化世界 & 中文系统 (中文化室)
DOS开发编程 & 发展交流 (开发室)
DOS软件下载 & 游戏分享 (下载室)
GRUB4DOS、SYSLINUX及其它启动管理软件讨论专区
其它操作系统综合讨论区
WinPE、PowerShell及其它命令行系统专区
贴图灌水、文学娱乐专区
网络日志(Blog)
论坛回收站
├ 链接失效,待修正