求救:如何用C++编写DOS命令?
求救:如何用C++编写DOS命令?
即,在MSDOS 或 xp的命令提示符中,写入自己编写的命令如同DOS本身自带的外部命令一样。
问题点数:100、回复次数:8Top
1 楼winks(少爷)回复于 2006-07-03 21:44:49 得分 0
int main(int argc, char* argv[])
利用argc,argv确定参数,剩下的就要根据不同命令进行实现了。Top
2 楼du51(郁郁思扬)回复于 2006-07-03 21:46:07 得分 0
接楼上的,
把此程序加入环境变量..
Top
3 楼Veiz(理论上存在)回复于 2006-07-04 00:32:03 得分 0
systemTop
4 楼laoluo554(老罗1#)回复于 2006-07-04 00:46:43 得分 0
// 应用程序命令行处理代码范例
BOOL CPwSafeApp::ParseCurrentCommandLine(CString *psFile, LPCTSTR *lpPassword, LPCTSTR *lpKeyFile, LPCTSTR *lpPreSelectPath)
{
long i;
BOOL bFirst = TRUE;
ASSERT(psFile != NULL); if(psFile == NULL) return FALSE;
psFile->Empty();
ASSERT(lpPassword != NULL); if(lpPassword == NULL) return FALSE;
*lpPassword = NULL;
ASSERT(lpKeyFile != NULL); if(lpKeyFile == NULL) return FALSE;
*lpKeyFile = NULL;
ASSERT(lpPreSelectPath != NULL); if(lpPreSelectPath == NULL) return FALSE;
*lpPreSelectPath = NULL;
if(__argc <= 1) return FALSE;
for(i = 1; i < (long)__argc; i++)
{
if((_tcsnicmp(__argv[i], _T("-pw:"), 4) == 0) && (_tcslen(__argv[i]) > 4))
*lpPassword = &__argv[i][4];
else if((_tcsnicmp(__argv[i], _T("/pw:"), 4) == 0) && (_tcslen(__argv[i]) > 4))
*lpPassword = &__argv[i][4];
else if((_tcsnicmp(__argv[i], _T("-keyfile:"), 9) == 0) && (_tcslen(__argv[i]) > 9))
*lpKeyFile = &__argv[i][9];
else if((_tcsnicmp(__argv[i], _T("/keyfile:"), 9) == 0) && (_tcslen(__argv[i]) > 9))
*lpKeyFile = &__argv[i][9];
else if((_tcsnicmp(__argv[i], _T("-preselect:"), 11) == 0) && (_tcslen(__argv[i]) > 11))
*lpPreSelectPath = &__argv[i][11];
else if((_tcsnicmp(__argv[i], _T("/preselect:"), 11) == 0) && (_tcslen(__argv[i]) > 11))
*lpPreSelectPath = &__argv[i][11];
else if((_tcsnicmp(__argv[i], _T("-ext:"), 5) == 0) && (_tcslen(__argv[i]) > 5))
{ // Ignore this parameter
}
else if((_tcsnicmp(__argv[i], _T("/ext:"), 5) == 0) && (_tcslen(__argv[i]) > 5))
{ // Ignore this parameter
}
else
{
if(bFirst != TRUE) *psFile += _T(" ");
*psFile += __argv[i];
bFirst = FALSE;
}
}
psFile->TrimLeft(); psFile->TrimRight();
if(psFile->GetLength() == 0) return FALSE;
if(psFile->Left(1) == _T("\"")) *psFile = psFile->Right(psFile->GetLength() - 1);
if(psFile->GetLength() == 0) return FALSE;
psFile->TrimLeft(); psFile->TrimRight();
if(psFile->GetLength() == 0) return FALSE;
if(psFile->Right(1) == _T("\"")) *psFile = psFile->Left(psFile->GetLength() - 1);
if(psFile->GetLength() == 0) return FALSE;
psFile->TrimLeft(); psFile->TrimRight();
if(psFile->GetLength() == 0) return FALSE;
return TRUE;
}
要想你的应用程序在命令行中可用,还要把自己的程序加入到环境变量中。
Top
5 楼jixingzhong(瞌睡虫·星辰)回复于 2006-07-04 09:01:42 得分 0
编辑你的程序,编译连接, 然后添加 path 等信息到你的系统环境变量中,
就可以在 命令行中使用了 ....Top
6 楼the_other_door()回复于 2006-07-04 13:29:36 得分 0
msdos和xp是两个完全不同的环境,前者是MZ格式的可执行文件,而在后者下运行的"dos"(实际应当称为nt控制台程序)是一个纯正的win32 pe格式文件,在后者中可以调用几乎所有的不涉及gdi的api。Top
7 楼the_other_door()回复于 2006-07-04 13:30:02 得分 0
msdos和xp是两个完全不同的环境,前者是MZ格式的可执行文件,而在后者下运行的"dos"(实际应当称为nt控制台程序)是一个纯正的win32 pe格式文件,在后者中可以调用几乎所有的不涉及gdi的api。Top
8 楼rollor_phoe(柔枫)回复于 2006-07-04 14:23:42 得分 0
将编译和连接成功的exe文件放在系统文件夹中,就可以在运行中直接输入你的程序名来执行了,不需要输入路径。
系统文件夹指c:\windows,c:\windows\system32等等。
如果你没有将文件放在系统文件夹中,也可以将你的文件路径加入环境变量中。
Top




