想在VC中调用DOS下的程序,处理数据?但这个程序是在DOS下的,而且运行后要在DOS窗口下输入要处理文件的文件名和输出文件的文件名,请问我怎么能实现调用DOS后,在程序中直接把变量作为输入参数,请问各位大侠怎么实现?谢谢大家帮忙!
4 个解决方案
用重定向符号,但最好把要处理文件的文件名放入另一文本文档如C盘下的xxx.txt中. system("你的命令 <c:\xxx.txt");
如:我要调用批处理文件设置系统日期,系统要求输入日期,我们可以把值事先放入某一文件中,如c:\a.txt(假设内容为2009-03-03)中,然后直接用date <c:\a.txt就可以了.
更多内容,可参考:http://download.csdn.net/user/ghost129/all/4中的批处理源代码(收集整理), 关于批处理的教程(txt格式的)
楼上,麻烦您再费费新,我想在VC中调用DOS下的程序,处理数据.但这个程序是在DOS下的,而且运行后要在DOS窗口下输入要处理文件的文件名和输出文件的文件名,我怎么能实现调用DOS后,在程序中直接把变量作为输入参数,请问怎么实现。另外在输入一个参数后要回车才能输入第二个参数,怎么在程序中向DOS窗口下输入ENTER
既然DOS这个窗口已经出现了,你可以直接使用VC下的System ()这个宏来操作DOS窗口,括号里面的内容就是DOS下的命令,如System("cls");但要包括#include <windows.h>这个头文件.
例如CString path="c:\\data.dat";
你可 System("echo c:\\data.dat>c:\\temp.txt "); //这步要在DOS提示你输入文件之前进行,否则处理数据过程会中断.
System("你的命令 < c:\\temp.txt & del c:\\temp.txt");
至于输入回车,实在不行就用vbs 的 SendKeys 吧.
system("echo set obj=wscript.CreateObject(\"wscript.shell\")>d:\\temp.vbs");
system("echo obj.AppActivate \"c:\\windows\\system32\\cmd.exe\">>d:\\temp.vbs");
system("echo obj.SendKeys \"{enter}\">>d:\\temp.vbs");
system("start d:\\temp.vbs");
Sleep(200);
system("del d:\\temp.vbs");
如果还是不合你的本意,请把代码贴出来,大家也好直接交流.