VC++中如何打开一个DOS窗口,然后运行多行命令?

纠结的程序猿 2009-08-15 02:44:28
VC++中如何打开一个DOS窗口,然后运行多行命令?注意是多行命令。
比如运行如下命令:

cd c:\test
dir
del test.txt

注意:希望用户能看到DOS窗口和运行结果。

...全文
714 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
晒月光的青蛙 2009-08-16
  • 打赏
  • 举报
回复
写成bat file就会只有一个窗口打开了
MoXiaoRab 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 pilotedit 的回复:]
引用 14 楼 gyk120 的回复:
用System函数或者执行cmd把命令作为参数传过去,可以满足你的1和2条,手工运行的话,还是执行cmd然后传参。

怎样把命令传进cmd窗口中呢?
[/Quote]
用SendMessage向CMD的窗口发送字符得了
副组长 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 pilotedit 的回复:]
引用 14 楼 gyk120 的回复:
用System函数或者执行cmd把命令作为参数传过去,可以满足你的1和2条,手工运行的话,还是执行cmd然后传参。

怎样把命令传进cmd窗口中呢?
[/Quote]
做控制台程序,DOS窗口就自动打开了,不用传。CMD也不用了。
副组长 2009-08-15
  • 打赏
  • 举报
回复
CMD
纠结的程序猿 2009-08-15
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 gyk120 的回复:]
用System函数或者执行cmd把命令作为参数传过去,可以满足你的1和2条,手工运行的话,还是执行cmd然后传参。
[/Quote]
怎样把命令传进cmd窗口中呢?
gyk120 2009-08-15
  • 打赏
  • 举报
回复
用System函数或者执行cmd把命令作为参数传过去,可以满足你的1和2条,手工运行的话,还是执行cmd然后传参。
纠结的程序猿 2009-08-15
  • 打赏
  • 举报
回复
很抱歉,我刚才可能没把要求将清楚。我希望用户的感觉就像手工执行多条命令一样。所以要满足如下条件:

1。不用*.bat文件
2。不改变命令格式。(不把命令转换为“d: & cd test & dir & del test.txt & pause”)
3。如果需要的话,用户可以在程序运行完这些命令后,再手工运行一些其他命令。

还是要谢谢zngsai和ydfy6,我也会给你们加分的。
ydfy6 2009-08-15
  • 打赏
  • 举报
回复
我调试成功的是

VC6

system("d: & cd test & dir & del test.txt & pause");
zngsai 2009-08-15
  • 打赏
  • 举报
回复
//一句话:
system("cd c:\test&dir&del test.txt&pause" );

//VC6.0SP6+XPSP3调试成功!
zngsai 2009-08-15
  • 打赏
  • 举报
回复
//一句话:
system("cd c:\test&dir&del test.txt&pause" );

//VC6.0SP6+XPSP3调试成功!
I_NBFA 2009-08-15
  • 打赏
  • 举报
回复
在batch最后加个pause命令, 把echo关了就不显示了........
码侬 2009-08-15
  • 打赏
  • 举报
回复
不好意思,上面会打开4个窗口,不能满足要求,下面就可以了

system("cd c:\test & dir & del test.txt & pause");
socoola 2009-08-15
  • 打赏
  • 举报
回复
做一个bat文件,内容就是你要执行的命令集,然后执行如下代码:
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=SW_SHOW;
ZeroMemory( &pi, sizeof(pi) );
//watchdog
if( !CreateProcess(NULL, // No module name (use command line).
TEXT("cmd.exe /k xx.bat"), // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi) // Pointer to PROCESS_INFORMATION structure.
)
{
MessageBox("error");
exit(-1);
}
码侬 2009-08-15
  • 打赏
  • 举报
回复
system(cd c:\test );
system(dir );
system(del test.txt );
system(pause);
chogimoga 2009-08-15
  • 打赏
  • 举报
回复
函数 system("cd c:\test");
system("del test.txt");

gyk120 2009-08-15
  • 打赏
  • 举报
回复
一般情况下都是调用,当然你也可以Winexec运行cmd,然后把批处理一条条传过去,Dos窗口看得到,但运行结果一般都是一闪而过,你不用echo试试
MoXiaoRab 2009-08-15
  • 打赏
  • 举报
回复
还不如写个BAT,然后在VC里面WinExec 调用 cmd.exe 1.bat 不就好了
ydfy6 2009-08-15
  • 打赏
  • 举报
回复
不懂!Up
I_NBFA 2009-08-15
  • 打赏
  • 举报
回复
你写个batch调用好么= =

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧