CreateDirectory()関数では、複数の階層のディレクトリは一度に作成できませんでしたが、 SHCreateDirectoryEx()関数を使うと、複数の階層のディレクトリを一度に作成できます。
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <windows.h>
#include <Shlobj.h>
/*
複数階層のディレクトリを一度に作成する
*/
int _tmain
(
int argc
, _TCHAR* argv[]
)
{
// std::wcoutのロケールを設定
std::wcout.imbue( std::locale( "", std::locale::ctype ) );
// ディレクトリの作成(複数階層)
int nRet = ::SHCreateDirectoryEx( NULL, L"r:¥¥folder1¥¥folder2¥¥folder3", NULL );
if ( nRet == ERROR_SUCCESS ) {
// 作成できました。
std::wcout << L"作成できました。" << std::endl;
}
else if ( nRet == ERROR_ALREADY_EXISTS ) {
// 既に存在していました。
std::wcout << L"既に存在していました。" << std::endl;
}
// 正常終了
return( 0 );
}
作成できました。