- ベストアンサー
複数階層のフォルダを一度に作成する方法
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
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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は、コマンドの終了を待つ) でできると思います。
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
関数があればべんりではありますけど自分で自作した方が早いですよ? 再帰関数作ればものの数分で作れますし・・・ 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
お礼
Bonjinさん、ご回答いただきましてありがとうございます。 結局、再帰関数を自作することにいたしました。 ありがとうございましたm(_ _)m
お礼
BLUEPIXYさん、ご回答いただきましてありがとうございます。 そっかぁ。ShellオブジェクトでMDコマンドを発行すれば良いのですね! サーバのOSは2000Serverになるとは思うのですが、今回はとりあえずFileSystemObjectのCreateFolderをぐるぐる回すことにしました。 でもでも、とても参考になりました! ありがとうございましたm(_ _)m