Board logo

标题: [求助]如何在dos批处理文件中调用非dos环境但是也为命令行窗 [打印本页]

作者: tired_bird     时间: 2004-10-24 00:00    标题: [求助]如何在dos批处理文件中调用非dos环境但是也为命令行窗

[求助]如何在dos批处理文件中调用非dos环境但是也为命令行窗口的批处理文件?
在系统终端shell里可以通过<<eof
command (其他软件下的命令行窗口命令)
<<eof
来进入其他软件下的命令行窗口,并可以进行命令操作,操作完后又重新回到shell终端。winxp下dos如何实现?
还望大家指点,谢先!
作者: Climbing     时间: 2004-10-25 00:00
DOS 不是 Linux,你要学会按照DOS的思维习惯工作。所以你最好把你的问题说清楚。
作者: willsort     时间: 2004-10-28 00:00
Re tired_bird :
    DOS环境也是一个系统终端的SHELL,只是相比*N*X的SHELL而言,功能和界面都要简化很多,以适应非专业用户群的需要。
    在DOS环境中消息的传递有以下几种途径:
    1,文件
    利用>,>>,<这三个重定向符号,实现DOS命令消息的传入和传出,文件作为一个比较“稳固”的中间媒介而存在,而且其对信息的容量和形式没有太多的限制。
    在DOS下所有的内外部命令都支持文件的输入、输出重定向,因为此特性这是由系统直接支持的,不过相比众多可以发送消息的命令而言,可以接收消息的命令就很少了,常用的大概有FIND,SORT,MORE,DEBUG,QBASIC,EDLIN等,当然,第三方软件和工具中这一类产品就相当丰富了。
    2,管道
    命令之间消息的直接传递使用管道符号 | 。
    所有支持重定向的命令也都同样支持管道,因为“管道“的本质就是文件的输出和输入,消息从一个命令的输出端流入管道,然后通过这个管道文件,再流入另一个命令的输入端,只不过消息的流入和流出、管道文件的创建和销毁都是由系统管理,我们通常情况下无法观察到而已。
    3,环境变量
    环境变量是作为命令消息的快速传递中介而应用的,相比文件,它的生成和销毁都要高效的多,但是相对的,其容量也就有限的多。
    DOS下的环境变量都是全局性的。如果在DOS环境中加载EXE类的应用程序(包括DOS SHELL),就会创建新的环境空间,并且继承父环境的所有变量,随着应用程序的退出,新的环境空间也被销毁,在其中所做的修改也不会影响父环境。比较特殊的是BAT,它在执行时并不会创建新的环境空间,所以它的变量空间仍然是DOS环境的全局空间。
    4,命令行参数
    命令行参数时传递短小消息最快的方法,使用方法类似于*n*x。
    但是它的限制也更多,除了容量上的限制(主要取决于命令行缓冲区的大小,这在dos系统的不同版本中都有所不同;其次取决于命令本身处理参数时所创建的变量空间的大小),还有字符范围的限制(像管道字符、重定向字符、参数分割符、字符串切分符等都不能正常传入)


[此贴子已经被作者于2004-10-29 10:22:36编辑过]



作者: tired_bird     时间: 2004-11-1 00:00
to willsort前几天,一直不能登陆这个网站,原来这个地方的网址有些变动,这么晚才看到你这篇回复有点遗憾,不然我这个dos新手就不要走那么多弯路。能看出你dos造诣高深莫测,所以也想你请教你还常去感觉不错的dos网站,英文网站也可以,以免这个地方的网址变动。可去相关较好地dos 网站。再回到问题本身,通过第一种方法,我把所要执行的命令都写入一个文件中,然后通过<commands.txt,可以解决一部分软件命令行窗口问题,这种软件有grads,cygwin,但不能解决matlab(数值计算的常用软件)命令行窗口问题,相比之下,这个软件命令行有些特殊,因为在dos执行它的可执行文件时会另外出现一个窗口(含有图形),窗口提示符为<< ,在dos命令行窗口 通过d:\software\matlab.exe <commands.txt或d:\software\matlab <commands.txt不能解决这个问题。我想请教的您的问题是:是不是dos批处理文件中调用非dos环境但是也为命令行窗口的软件不能成功原因是在于这种软件本身不能识别管道,重定向吗?不支持dos下的批处理吗?还望指教!