先描述一下我想做的:
用户在WEB页面中输入命令,程序在后台自动打开cmd窗口,输入命令执行之,待命令完成后(即出现命令完成提示符),对命令的输出信息进行判断(判断关键字),如果成功则执行下一个命令。每执行完一个命令都必须把整个命令执行的过程在WEB页面呈现给用户。
目前cmd窗口中输入命令以及对输出信息的判断是由第三方程序完成。原来的做法是在命令的执行过程中由第三方程序不断地将整个cmd窗口的内容复制粘贴到文件中再进行关键字判断。当判断命令成功时就把文件中的内容输出到WEB页面中。但这种方法当同时有多个cmd窗口在进行操作时会出现问题,而且输入到WEB页面的内容也可能包含前次命令执行的信息。
现在想用重定向来做,但有些问题。具体如下:
我现在用的重定向是这样的: command 1>file 2>&1
但这样file中的内容只有命令的输出信息,在WEB中呈现的时候不够全面,我希望能把输入命令的那一行以及命令完成后的那一行文字也输入到file中。不知道在P中能不能实现?
举例如下:- C:\>rasdial test
- 远程访问错误 623 系统无法为这个连接找到电话簿项。
- 若需此错误的详细说明:
- 请在帮助中键入“hh netcfg.chm”
- 单击“疑难解答”,选择“错误信息”,然后键入 “ 623”
-
- C:\>
复制代码 我希望重定向输出的file文件中的内容是以上内容,即包含前后带路径的那两行。cmd窗口是否显示信息则不作限制。
还有一种情况,就是用户前面已经执行了外部命令,如ftp命令,此时的cmd窗口实际是处于ftp命令模式下,此时不知道能不能也做到像前面那样的重定向?或者其它变通的方法把需要的内容输出到file中?例子如下:- C:\>ftp xxx.xxx.xxx.xxx //用户的第一个命令,command1
- Connected to xxx.xxx.xxx.xxx.
- 220 (vsFTPd 2.0.1)
- User (xxx.xxx.xxx.xxx:(none)): test //command2
- 331 Please specify the password.
- Password: //command3
- 230 Login successful.
- ftp> ls //command4
- 200 PORT command successful. Consider using PASV.
- 150 Here comes the directory listing.
- file1
- file2
- file3
- 226 Directory send OK.
- ftp: 收到 76 字节,用时 0.00Seconds 76000.00Kbytes/sec.
- ftp> bye //command5
- 221 Goodbye.
-
- C:\>
复制代码 其中每两个command之间的内容必须输出到单独的文件中,以方便在WEB呈现。如command1对应的文件内容应该是- C:\>ftp xxx.xxx.xxx.xxx //用户的第一个命令,command1
- Connected to xxx.xxx.xxx.xxx.
- 220 (vsFTPd 2.0.1)
- User (xxx.xxx.xxx.xxx:(none)):
复制代码 本人对dos了解不多,还请高手指点一下。能实现第一个要求就好了,能实现第二个要求那就十分好了。先谢谢了!
(本人初来,不知道这样发贴合不合规范。如有任何不妥的地方请版主指出。对问题如有描述不清楚的也请告知。)
[ 本帖最后由 imchpy 于 2008-12-3 17:28 编辑 ] |