社区
C++ Builder
帖子详情
如何用WinExec来执行DOS命令?
cbz
2003-02-18 08:49:41
大家好,下面的做法为什么不行呢?
WinExec("copy 111.txt + 222.txt /b",SW_HIDE);
...全文
2029
13
打赏
收藏
如何用WinExec来执行DOS命令?
大家好,下面的做法为什么不行呢? WinExec("copy 111.txt + 222.txt /b",SW_HIDE);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
penu
2003-02-26
打赏
举报
回复
怎么不结贴?:(
penu
2003-02-20
打赏
举报
回复
注意:98用command,2000用cmd.
penu
2003-02-20
打赏
举报
回复
假设要合并的文件为1.txt,2.txt,2.txt合并到1.txt中。
=======
1、如果两个文件在同一个目录下(假设都在C:\temp目录下):
SetCurrentDir("c:\\temp");
WinExec("command /c copy 1.txt+2.txt /b",SW_HIDE);
=======
2、如果两个文件不在同一个目录下,
假设 1.txt 在 C:\temp
2.txt 在 D:\temp
SetCurrentDir("c:\\temp");
WinExec("command /c copy 1.txt+D:\\temp\\2.txt /b",SW_HIDE);
明白了吗?
penu
2003-02-19
打赏
举报
回复
正确的写法是:
2000下:
SetCurrentDir("c:\\");
WinExec("cmd /c copy 1.txt+2.txt /b",SW_HIDE);
98下:
SetCurrentDir("c:\\");
WinExec("command /c copy 1.txt+2.txt /b",SW_HIDE);
此处假设你要复制的文件所在目录为C:\,要合并的文件分别为1.txt和2.txt,合并后文件名仍为1.txt。你的程序中应作相应修改。
如果你合并到一个新文件3.txt,则应为:
2000:
WinExec("cmd /c copy 1.txt+2.txt 3.txt /b",SW_HIDE);
98:
WinExec("command /c copy 1.txt+2.txt 3.txt /b",SW_HIDE);
penu
2003-02-19
打赏
举报
回复
楼主:
你的语句
WinExec("copy 111.txt + 222.txt /b",SW_HIDE);
有误:
111.txt + 222.txt 之间不能有空格,应该为:
111.txt+222.txt
cscer
2003-02-19
打赏
举报
回复
呵呵~
不错!
学习……
cbz
2003-02-19
打赏
举报
回复
to penu(懒猫) :
不知道是否能在WinExec的命令行里面用路径呢? 我在我这里试了好像不行,
WinExec("cmd /c copy c:\\1.txt+c:\\aaa\\2.txt /b",SW_HIDE);
pepsi1980
2003-02-18
打赏
举报
回复
建议用CreateProcess(),ShellExecute()
SHELLEXECUTEINFO ShExecInfo = {0};
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = NULL;
ShExecInfo.lpFile = "c:\\MyProgram.exe";
ShExecInfo.lpParameters = ""; //可以加参数
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_SHOW;
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess,INFINITE);
以下是一个使用CreateProcess()函数的例子:
void CreateChildProcessAndWaitUntilDone(const AnsiString& strCmdLine)
{
PROCESS_INFORMATION piProcInfo;
STARTUPINFO siStartInfo;
// Set up members of STARTUPINFO structure.
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.lpReserved = NULL;
siStartInfo.lpReserved2 = NULL;
siStartInfo.cbReserved2 = 0;
siStartInfo.lpDesktop = NULL;
siStartInfo.dwFlags = 0;
// Create the child process.
CreateProcess(
NULL,
strCmdLine.c_str(),
NULL, // process security attributes
NULL, // primary thread security attributes
0, // handles are inherited
0, // creation flags
NULL, // use parent's environment
NULL, // use parent's current directory
&siStartInfo, // STARTUPINFO pointer
&piProcInfo); // receives PROCESS_INFORMATION
// Wait for the processs to finish
DWORD rc = WaitForSingleObject(
piProcInfo.hProcess, // process handle
INFINITE);
}
cbz
2003-02-18
打赏
举报
回复
to cdws222(二当家) ;
并不是dos命令只能用system来执行的,由于讨厌system出现的黑屏,才用WinExec来运行的
cdws222
2003-02-18
打赏
举报
回复
人家明明是WinExec嘛干什么让人家运行DOS命令?
运行DOS命令的函数是system("copy 111.txt + 222.txt /b");
cbz
2003-02-18
打赏
举报
回复
咦,用楼上的方法试试,行了,不过,不清楚为什么不能再命令中加上路径呢?
如下不行:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
WinExec("cmd /c copy c:\\111.txt + c:\\222.txt /b",SW_HIDE);
}
而非得:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
SetCurrentDir("c:\\");
WinExec("cmd /c copy zbc.txt + gsx.txt /b",SW_HIDE);
}
呢?
解决了,马上结贴
COKING
2003-02-18
打赏
举报
回复
win98 :command /c dos命令 或 command /k dos命令
win2000 :cmd /c dos命令 或 cmd /k dos命令
guanri
2003-02-18
打赏
举报
回复
你的dos命令就错了
在VC下
执行
DOS命令
并得到输出
在VC下
执行
DOS命令
并得到输出 system方法
Win
Exec
方法 Shell
Exec
ute方法 可回显的调用方法
VC调用
dos命令
总结
在VC++(Visual C++)编程环境下,开发者经常会遇到需要
执行
DOS命令
的情况,例如获取系统信息、文件管理等。本文将详细解析如何在VC环境中有效地调用
DOS命令
,并探讨两种常用方法:`system`函数与`
Win
Exec
`函数,...
System
Win
Exec
Shell
Exec
ute CreateProcess用法总结
`system`函数是C标准库中的一个函数,它允许程序
执行
DOS命令
或者
Win
dows的命令解释器(cmd.exe)来运行其他程序。它会启动一个新的命令解释器实例并
执行
指定的命令字符串。 (三)源码示例: ```cpp #include int ...
C/C++中一次性
执行
多个
DOS命令
的实现思路
在这个案例中,我们不是启动一个特定的应用程序,而是启动一个CMD(命令提示符)进程,因为CMD能够接收并
执行
DOS命令
。以下是一个简单的`CreateProcess`调用,用于启动CMD: ```c char cmdLine[] = "cmd"; ...
C下
执行
命令行的方法汇总
system() 函数用于
执行
shell 命令,它可以
执行
DOS 命令并返回
执行
结果。system() 函数的使用格式为:`int system(const char * string);` 其中,`string` 是要
执行
的 shell 命令。 system() 函数的返回值有三种...
C++ Builder
13,874
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章