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 ); }
作成できました。