中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 编一个程序:从键盘获取字符赋值给DOS环境变量的问题
作者:
标题: 编一个程序:从键盘获取字符赋值给DOS环境变量的问题 上一主题 | 下一主题
无忌孤飞
初级用户




积分 126
发帖 6
注册 2004-6-11
状态 离线
『楼 主』:  编一个程序:从键盘获取字符赋值给DOS环境变量的问题

我想写一个程序想从键盘上获取字符,然后赋值给环境变量.我做了好久了,用也写了个程序,就是实现不了,各位高手帮办忙呀~
我之前的程序如下:
QB的:
input a$
g$="set path="+a$
shell g
运行后PATH没有任何变化.

2004-6-13 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 2 楼』:  

Re 无忌孤飞:

  我并不太熟悉QB,不过猜想你的问题,应该出在SEHLL语句上。SHELL语句利用当前的DOS解释器重新加载一层命令外壳,它与原来的命令环境属于母子关系。如果其后跟随命令串,则执行完命令后会卸载这个子外壳,而你的SET PATH命令串也只能在子外壳中有效,在其卸载退出后会自然失效。所以它不能改变母外壳的环境变量。

  所以,在高级语言中想全局性的改变环境变量,直接利用类SHELL语句是无效的,而是应该利用类似PEEK,POKE的直接读写内存的语句,而且还需要利用程序PSP计算出全局环境的内存位置。

  当然,如果不用高级语言来实现,还是有许多取巧的方法的。本站版主 Roy 便提供了一种用批处理实现的办法。http://dos.e-stone.cn/dosbbs/dispbbs.asp?BoardID=12&ID=8905&replyID=54243&skin=1
  另外,许多第三方提供的增强工具也可以轻松实现类似的功能。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2004-6-20 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
honhaizh
初级用户





积分 35
发帖 18
注册 2006-4-26
状态 离线
『第 3 楼』:  

哎,一个环境变量就这么麻烦啊!

2006-5-28 10:45
查看资料  发短消息 网志   编辑帖子  回复  引用回复
asbai
高级用户




积分 653
发帖 252
注册 2006-4-16
状态 离线
『第 4 楼』:  

willsort兄正解,任何OS中都是很忌讳直接修改父进程环境的。这是最起码的安全保证。

DOS下还可以直接访问PCB,其它OS中这种保护更为严厉了

2006-5-28 14:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jawbin
高级用户




积分 994
发帖 444
注册 2005-1-29
状态 离线
『第 5 楼』:  

好象 win32 不共享 DOS VM 了. 但是设置同一个 DOS VM 内的环境变量是没有问题的. 如果是真实 DOS 的话, 你这样可能有用.

2006-5-28 15:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: