• ベストアンサー

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

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

  • 1つ上の階層にフォルダを移動させるバッチファイル

    windows XPで下記のようなバッチファイルを作成したいです。 aaaフォルダ内にyyy.batと111フォルダがあり、111フォルダの中にbbbフォルダとcccフォルダがあるとします。なお、bbb、cccフォルダ内にはファイルが存在しています。 そしてaaa、bbb、cccの各フォルダの名称は可変します。 この状態でyyy.batにbbb、cccフォルダをaaaフォルダ内に移動させる(一つ上の階層に移動させる)バッチプログラムを作成したいと思っています。 どのようにすればいいのでしょうか。 お分かりの方、お教えいただけないでしょうか。 よろしくお願いいたします。

  • VB6.0 フォルダ配下(サブフォルダ含む)のファイルを全て読み込む方法

    環境 OS:WINDOWS 2000 PRO ソフト:VisualBasic 6.0 指定したフォルダ配下の全てのhtmlファイルを読み込む機能を作成したいと考えています。 C:\AAA\BBB\CCC\sample1.html C:\AAA\BBB\CCC\sample2.html C:\AAA\BBB\CCC\DDD\sample3.html C:\AAA\BBB\CCC\DDD\EEE\sample4.html C:\AAA\XXX\YYY\ZZZ\sample5.html 以上のような構造になっていた場合に、ルートフォルダとして『C:\AAA』を指定し、その配下全てのhtmlファイルを読み込み、1ファイルずつ加工したいと考えています。 何階層にも渡るファイルを全て読み込む方法がわかりません。 よろしくお願い致します。

  • Webサイトの階層化のしかたについて

    弱小企業でWebサイトの担当をしていますが、全くの独学なので基本的な事が分かっておりませんので宜しくお願いします。 先日セミナーに行ったところ、サイトをテーマ毎に階層化しなさいと説明をうけましたが、やり方がわかりません。 階層化にすると「http://AAA.com/BBB/CCC.html」となり、「/」で区切られてページ(アドレス)が表示される事ですよね。 現在は全て「http://AAA.com/BBB.html」、「http://AAA.com/CCC.html」と表示されています。 現在はhtmlファイルはメインのフォルダ内に全て入れていて、cssファイル、jsファイル、画像ファイルはメインフォルダの中にcssフォルダ、jsフォルダ、画像フォルダを作って入れています。 CCC.htmlファイルをどこに置けば良いのでしょうか。 メインフォルダの中に例えばBBBフォルダを作ってその中にCCC.htmlファイルを入れると言う事なんでしょうか。 そうするとBBB.htmlファイルを見るときは「http://AAA.com/BBB.html」になりますし、CCC.htmlファイルを表示するときは「http://AAA.com/BBB/CCC.html」になりますよね。 同様に「http://AAA.com/BBB/CCC/DDD.html」としたい場合は、BBBフォルダ内にCCCフォルダを作ってDDD.htmlファイルを入れておくという事なんでしょうか。 極基本的な質問ですが、ご回答宜しくお願い致します。

    • ベストアンサー
    • HTML
  • 変数で新しいフォルダを作成する方法

    aspでpostされた際に、レコードID(RecID)を名前としたフォルダを 作成したいのですが、下記のように記述しても作成しません。 RecID = 1001 Dim objFSO Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.CreateFolder "c:\Inetpub\wwwroot\testdir\files\" & RecID 動的なフォルダの作成はどのようにしたら実現できますでしょうか。 それとも、そもそも不可能なのでしょうか?よろしくお願いします。

  • フォルダ階層を変更するバッチファイル?

    社内ネットワーク上にある50台ほどのPC個々について、それぞれのPC内のフォルダ パスを一発で変更させる必要が生じました。例えば、現在 C:\AAA\BBB という階層になっているものを C:\BBBとしたいのです。 このような事を、バッチファイルの様なものを作成し、個々人にやらせたいのですが可能でしょうか? 可能であれば作り方をお教え願えませんでしょうか。よろしくお願いします

  • (VBA) 多階層のフォルダーの配置換え

    VBA 多階層のフォルダーを配置換えする 2021/07/13 16:54 以下のような操作をEXCELのVBAで処理可能でしょうか ? --------------------- 例えば、 添付画像のような階層が深いフォルダーの各層の最後に存在している AAABBB,CCC,DDD,EEEの各フォルダーを#testに引き上げる。 ターゲットは、フォルダーでファイルではありません。 1段下層のフォルダーを引き上げるBATなどは検索すれば見つかりますが 階層が深い(多階層)の場合を見つけられませんでした。 (ファイルの場合は少し見つかりましたがフォルダーは見つけられませんでした。) 具体的には O:\#test\AAA O:\#test\#2\BBB O:\#test\#2\#3\CCC O:\#test\#2\#3\DDD O:\#test\#2\#3\#4\EEE を O:\#test\AAA O:\#test\BBB O:\#test\CCC O:\#test\DDD O:\#test\EEE に配置換えする 配置換え後は、O:\#test\#2及#2以降の下層のフォルダーは削除する。 ---------------------

  • バッチファイルでファイルを比較後他のフォルダにコピ

    次のようなファイル構成で C:\AAA     C:\BBB   \ccc      \ccc    abc.txt    abc.txt    def.jpg    def.jpg   \ddd      \ddd    ghi.txt    ghi.txt    jkl.jpg    jkl.jpg C:AAA\ccc\abc.txt と C:BBB\ccc\abc.txt を比較 C:AAA\ccc\def.jpg と C:BBB\ccc\def.jpg を比較 C:AAA\ddd\ghi.txt と C:BBB\ddd\ghi.txt を比較 C:AAA\ddd\jkl.jpg と C:BBB\ddd\jkl.jpg を比較 全てのファイルに対し比較後C:\CCC(別のフォルダ)に階層を含めコピーしたく for /R %%A in ("C:\AAA") do for /R %%B in ("C:\BBB") do if %%~zA NEQ %%~zB (goto A) :A echo NEQ としましたがループしてしまいました 比較後C:\CCC(別のフォルダ)に階層を含めコピーする方法も含め ご教授をい願いします

  • VBSでファイル名と同じフォルダを作成し、移動させる。

    はじめまして。こんにちは。ファイル名の取得、フォルダの作成、移動ができなくて困っています。 たとえばC:\testというフォルダの中にaaa1.txt aaa2.txt,aaa3,txt・・・zzz343.txtというようにファイルがランダムにあったとします。最初の3文字は英語と決まっています。そこでaaa1.txtやaaa2.txtがあればaaaというフォルダを同じ階層に作成し、aaa1.txtとaaa2.txtを新しく作成したaaaというフォルダに移動させる。これをすべてのファイルにたいして行いたいのですがどうすればいいのでしょうか? 参考になるURLやサンプルプログラムがありましたら教えて下さい。よろしくお願い致します。

  • コマンドについて

    初心者でコマンドを勉強しています。質問させてください。 Dドライブ直下にaaaフォルダとbbbフォルダを作りbbbフォルダの中にはccc.txtが入っています。 bbbをフォルダごとaaaに移動させようとしてコマンドでD:\>move bbb \aaa という風にaaaの前に「\」付けてしまいました。・・・がしかし上手く 移動され、aaaの中にbbbが入りました。  これをD直下では無く、Dの中のtestフォルダの中に、同じようにaaaフォルダ、bbbフォルダ(中にはccc.txt)を作り、D:\>move bbb \aaa とやってみると・・aaaには移らず、D直下に新たにaaaフォルダが作成され、その中にccc.txtだけが移ってしまいました。 bbbは消え去りました。 なぜこういう違いがでるのでしょうか。 初心者ですみませんがよろしくお願いいたします。

  • ExcelのVBAでの複数階層からのフォルダ名の取得

    ExcelのVBAでの複数階層からのフォルダ名の取得 下記階層に対して以下の処理をExcelのVBAで行うにはどしたら良いか、 申し訳ありませんが、どうか教えて頂きたく思います。 C:\test1   ├\aaa\ddd   │   ├\xxx1\   │   └\yyy2\   │   ├\bbb\ddd   │   └\xxx3\   │   │   └\ccc\ddd       ├\xxx4\       ├\xxx5\       └\zzz6\ 1 C:\test1を指定する 2 1で指定した中にある各\dddフォルダ内にあるフォルダ名を順に取得する 3 2で取得したフォルダ名をExcelのSheet1のA1から順に書き出す Excel   A    B    C    D    E 1 xxx1 2 yyy2 3 xxx3 4 xxx4 5 xxx5 6 zzz6 7 8 9  Sheet1 Sheet2 Sheet3 勉強不足で申し訳ありません。 どうぞ宜しくお願い致します。

専門家に質問してみよう