我正在使用CreateProcess
复制文件。如果PC离线,如果目录不存在,我也可以捕获不同的错误。这是我遇到的问题:如果所有复制都成功,则返回0作为错误代码;如果源文件夹中没有文件,则返回0,因此不执行复制。我必须检测在源文件夹中是否没有文件。如何在MFC VC++ 2013中执行此操作?
我花了几个小时尝试不同的解决方案,但我的知识还不够高,无法实现我在互联网上找到的所有东西。所以我必须要代码,然后我才会明白。提前谢谢你。
这是我使用的代码:
temp_dest = _T("/min /c xcopy \"D:\\Test\\*.*\" \"") + m_destination + _T("\" /Y /E /Q");
LPTSTR temp_dest2 = (LPTSTR)(LPCTSTR)temp_dest;
STARTUPINFO sinfo;
PROCESS_INFORMATION pinfo;
memset(&sinfo, 0, sizeof(STARTUPINFO));
memset(&pinfo, 0, sizeof(PROCESS_INFORMATION));
sinfo.dwFlags = STARTF_USESHOWWINDOW;
sinfo.wShowWindow = SW_HIDE;
BOOL bSucess = CreateProcess(L"C:\\Windows\\System32\\cmd.exe", temp_dest2, NULL, NULL, FALSE, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &sinfo, &pinfo);
DWORD dwCode;
TerminateProcess(pinfo.hProcess, 2);
GetExitCodeProcess(pinfo.hProcess, &dwCode);
TCHAR msg2[100];
StringCbPrintf(msg2, 100, TEXT("%X"), dwCode);
MessageBox(msg2, (LPCWSTR)L"DWCode 2", MB_OK | MB_ICONERROR);
if (dwCode == 4)
{
MessageBox((LPCWSTR)L"DW 4", (LPCWSTR)L"Path not found", MB_OK | MB_ICONERROR);
}
if (dwCode == 2)
{
MessageBox((LPCWSTR)L"DW 4", (LPCWSTR)L"PC Offline", MB_OK | MB_ICONERROR);
}
发布于 2018-06-08 01:39:19
您可以使用WIN32函数GetFileAttributes(..)来检查文件是否存在:
if (GetFileAttributes("C:\\test.txt") != INVALID_FILE_ATTRIBUTES)
{
/* C:\test.txt is existing */
}
另一种方法可能是尝试打开文件(如果成功,则再次关闭它)。
https://stackoverflow.com/questions/50747098
复制相似问题