中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-03 02:02
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 在DOS7.1中,用什么方法把”cd“输出内容赋予变量中? 查看 1,172 回复 8
楼 主 在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
32位才是DOS未来的希望
个人网志:http://sololand.moe
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”则得到当前路径。
32位才是DOS未来的希望
个人网志:http://sololand.moe
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 ]
32位才是DOS未来的希望
个人网志:http://sololand.moe
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
性别 男
状态 离线
说明一下,对于镜像软盘 并非不能写文件,而是要镜像盘还有空闲空间,另外,如果关机前没有把新生成文件转存到硬盘,关机后就会“消失”——因为镜像软盘中的文件是存 在 内存中 的。
论坛跳转: