中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 在DOS7.1中,用什么方法把”cd“输出内容赋予变量中?
作者:
标题: 在DOS7.1中,用什么方法把”cd“输出内容赋予变量中? 上一主题 | 下一主题
zts59
中级用户




积分 387
发帖 104
注册 2004-11-19
状态 离线
『楼 主』:  在DOS7.1中,用什么方法把”cd“输出内容赋予变量中?

刚启动DOS7.1,无外部命令。
想通过“CD”得到刚启动后的盘符。并赋予变量中。

注:因为是镜像文件,不能创建文件。

[ Last edited by zts59 on 2006-8-10 at 11:06 ]

2006-8-10 11:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zts59
中级用户




积分 387
发帖 104
注册 2004-11-19
状态 离线
『第 2 楼』:  

无解吗??

只有不通过CD来得到盘符了,呵呵,用%comspec%了

2006-8-10 21:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
brglng
银牌会员

永遠的DOS~~~



积分 1200
发帖 466
注册 2005-2-1
来自 上海
状态 离线
『第 3 楼』:  

exit | %comspec% /Q /K prompt set a=$n > a.bat
call a.bat



32位才是DOS未来的希望
个人网志:http://sololand.moe
2006-8-11 10:35
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zts59
中级用户




积分 387
发帖 104
注册 2004-11-19
状态 离线
『第 4 楼』:  

谢谢楼上的,
不过有点问题,变量A并没有得到当前盘符。
所以我用了
if %comspec%==C:\COMMAND.COM goto next|set bootp=C:
if %comspec%==A:\COMMAND.COM goto next|set bootp=A:

2006-8-11 13:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
brglng
银牌会员

永遠的DOS~~~



积分 1200
发帖 466
注册 2005-2-1
来自 上海
状态 离线
『第 5 楼』:  



  Quote:
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”则得到当前路径。



32位才是DOS未来的希望
个人网志:http://sololand.moe
2006-8-11 14:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zts59
中级用户




积分 387
发帖 104
注册 2004-11-19
状态 离线
『第 6 楼』:  

不对吧,不知道这么朋友有没有测试,

/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 ]

2006-8-11 18:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
brglng
银牌会员

永遠的DOS~~~



积分 1200
发帖 466
注册 2005-2-1
来自 上海
状态 离线
『第 7 楼』:  

我知道了
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 ]



32位才是DOS未来的希望
个人网志:http://sololand.moe
2006-8-11 20:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zts59
中级用户




积分 387
发帖 104
注册 2004-11-19
状态 离线
『第 8 楼』:  

谢谢了,

其实你还建立了两个批处理,因为是镜像文件,不能产生文件的,是不能写入的。

这样的话,我还要考滤要加载内存虚拟盘,然后用上述代码。不可合理哟。

况且如果可以写入文件的话,用:
cd\
cd>aa.txt
就可以了,

要知道DOS启动的话,不是在A盘,就是在C盘。所用 if %comspec%=……

就最简单了。

也谢谢你的方法,给了另一种思路。

[ Last edited by zts59 on 2006-8-11 at 21:07 ]

2006-8-11 21:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
movy
初级用户





积分 61
发帖 33
注册 2007-1-13
状态 离线
『第 9 楼』:  

说明一下,对于镜像软盘 并非不能写文件,而是要镜像盘还有空闲空间,另外,如果关机前没有把新生成文件转存到硬盘,关机后就会“消失”——因为镜像软盘中的文件是存 在 内存中 的。

2007-1-14 09:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: