dポイントプレゼントキャンペーン実施中!

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

A 回答 (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は、コマンドの終了を待つ)
でできると思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/03/21 18:51

関数があればべんりではありますけど自分で自作した方が早いですよ?


再帰関数作ればものの数分で作れますし・・・

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
  
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/03/21 18:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!