• ベストアンサー

複数階層のフォルダを一度に作成する方法

ASPでフォルダを作成したいのですが FileSystemObjectのCreateFolderだと 1階層分のフォルダしか作成できないので 一度に複数階層のフォルダを作成する方法がないかと悩んでいます。 「C:\aaa」というフォルダか元々あったとして その中に「bbb」というフォルダを作成したい場合は FileSystemObject.CreateFolder("C:\aaa\bbb") で作成できますが 「bbb」の中にさらに「ccc」というフォルダを作成したい場合は FileSystemObject.CreateFolder("C:\aaa\bbb\ccc") としてもbbbフォルダが存在しないためエラーになります。 FileSystemObject.CreateFolder("C:\aaa\bbb") FileSystemObject.CreateFolder("C:\aaa\bbb\ccc") と2回やればできるのですが 作成したいフォルダパスは階層も固定ではないので できれば1回で「bbb」フォルダも「ccc」フォルダも作成したいのです。 ループを回して上から順番にひとつひとつ作成するしかないのでしょうか? ASPで使用できる何かよい関数などご存知でしたら教えてくださいm(_ _)m

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

OSがXP(NT系)の場合CMD.exe のMDコマンドで複数階層のフォルダをいきなり作成できますので、 Dim oShell Set oShell = CreateObject("WSCript.shell") oShell.run "cmd /c MD C:\aaa\bbb\ccc", 0, 1 (0は、(新しいプロセス)ウインドウの非表示、1は、コマンドの終了を待つ) でできると思います。

eri-_-
質問者

お礼

BLUEPIXYさん、ご回答いただきましてありがとうございます。 そっかぁ。ShellオブジェクトでMDコマンドを発行すれば良いのですね! サーバのOSは2000Serverになるとは思うのですが、今回はとりあえずFileSystemObjectのCreateFolderをぐるぐる回すことにしました。 でもでも、とても参考になりました! ありがとうございましたm(_ _)m

その他の回答 (1)

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

関数があればべんりではありますけど自分で自作した方が早いですよ? 再帰関数作ればものの数分で作れますし・・・ Sub CreateFolders(ByVal DirPath)  If Not objFs.FolderExists(DirPath) Then   ParentFolderPath = objFs.GetParentFolderName(DirPath)   If Not objFs.FolderExists(ParentFolderPath) Then CreateFolders ParentFolderPath   objFs.CreateFolder DirPath  End If End Sub   

eri-_-
質問者

お礼

Bonjinさん、ご回答いただきましてありがとうございます。 結局、再帰関数を自作することにいたしました。 ありがとうございましたm(_ _)m

関連するQ&A