「d:\temp\s1\」を保持するパスを指定してCreateDirectoryを使用していますが、同じ番号をヒットする可能性が低いため、関数は1000回に1回失敗しますが、問題ではないと思いますが、「ERROR_ALREADY_EXISTS」を返す場合はまだそのディレクトリを作成します
たとえば、私はこのディレクトリ構造を持っています
d:\temp\s1\1002 d:\temp\s1\1009 ………… …………
getLastError() が「ERROR_ALREADY_EXISTS」を返すと、30 個のそのようなフォルダーがあるとします。ループを続行し、次のランダム番号をチェックします。私が見つけたのは、以前は存在しなかった新しいディレクトリが無限に作成されていることです...非常に奇妙なことですが、それは非常にランダムな性質であるため、どんな助けも最善です
コードはそのようなものです...
int randNo = 0;
while(1)
{
randNo = rand();
cnt++;
sprintf(tempDirPath,"d:\\temp\\S1\\%d",randNo);
mbstowcs(wBuf,tempDirPath,_MAX_PATH);
bVal = CreateDirectory((LPCTSTR)wBuf,NULL);
retVal = GetLastError();
if( retVal == ERROR_ALREADY_EXISTS)
{
continue;
}
else if (retVal == ERROR_PATH_NOT_FOUND)
{
bVal = CreateFolder(tempDirPath); // i'm creating a folder for further use
}
break;
}