[リストへもどる]
一括表示

投稿時間:2004/05/17(Mon) 11:27
投稿者名:うまなり
Eメール:sonoda@ch.mbn.or.jp
URL :
タイトル:
サブフォルダを含めたフォルダの一括作成
【質問事項】
フォルダを作成する際に、サブフォルダを含めて一括で作成する方法を
ご存知の方がいらっしゃれば教えて下さい。

【例】
作成フォルダ:C:\TEMP\YYYYMMDD\HHMMSS
YYYYMMDD:日付
HHMMSS:時刻
C:\TEMPまでが固定ディレクトリで、それ以降は可変となり
フォルダ作成時にはフォルダ自体存在していません。

以上です。よろしくお願い致します。

投稿時間:2004/05/17(Mon) 12:45
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re: サブフォルダを含めたフォルダの一括作成
> 【質問事項】
> フォルダを作成する際に、サブフォルダを含めて一括で作成する方法を
> ご存知の方がいらっしゃれば教えて下さい。

一括で作成する方法はないので、作成するフォルダの親フォルダがなければ
親フォルダを作成してから、作成するしかないです。
再帰を使えば、関数1つで済みます。

Private Sub MkDirEX(ByVal strPathName As String)
    Dim fso As Object
    Dim strParentPath As String

    Set fso = CreateObject("Scripting.FileSystemObject")
    
    strParentPath = fso.GetParentFolderName(strPathName)
    If fso.FolderExists(strParentPath) = False Then
        MkDirEX strParentPath
    End If
    fso.CreateFolder strPathName
End Sub

【例】
   Call MkDirEX("C:\TEMP\YYYYMMDD\HHMMSS")

投稿時間:2004/05/17(Mon) 14:31
投稿者名:うまなり
Eメール:sonoda@ch.mbn.or.jp
URL :
タイトル:
ありがとうございます
> > 【質問事項】
> > フォルダを作成する際に、サブフォルダを含めて一括で作成する方法を
> > ご存知の方がいらっしゃれば教えて下さい。
>
> 一括で作成する方法はないので、作成するフォルダの親フォルダがなければ
> 親フォルダを作成してから、作成するしかないです。
> 再帰を使えば、関数1つで済みます。
>

一括作成する方法は無いのですね。LESIAさんに教えていただいた方法で
フォルダの作成を実施してみようと思います。ありがとうございましたv(^o^)v

投稿時間:2004/05/17(Mon) 14:38
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
こんな方法も (MakeSureDirectoryPathExists)
> 一括作成する方法は無いのですね。
VB標準ではありません……が、APIを使っても良ければ、こんな関数があります。

'ディレクトリの記述はルートから始めて、最後を「\」で終えて下さい
Public Declare Function MakeSureDirectoryPathExists _
  Lib "imagehlp" (ByVal DirPath As String) As Long

DirPath に、フォルダのフルパスを指定するだけで、
深い階層のディレクトリも一括で作成してくれます。

投稿時間:2004/05/18(Tue) 10:33
投稿者名:うまなり
Eメール:sonoda@ch.mbn.or.jp
URL :
タイトル:
参考にします
魔界の仮面弁士さん。またまたありがとうございます。
今回も参考にさせていただきます。

投稿時間:2004/05/18(Tue) 12:45
投稿者名:IMA
Eメール:
URL :http://groups.yahoo.co.jp/group/bccompiler/messages/164?expand=1
タイトル:
Re: こんな方法も (MakeSureDirectoryPathExists)
ご存じの方も多いと思いますが、
参考リンクの様に2バイト文字で記載した場合エラーとなることがあります。
⇒ 私もこれで焦ったことがあり、今はベーシックな方法を採用しています。
また、確認していませんがあまり長いパス名もエラーになると聞いたことがあります。

>MakeSureDirectoryPathExists()で「ソ」「表」がつかえない。
>MakeSureDirectoryPathExists("C:\\ソニー\\表紙\\");
>とかいう風にできないってことです。NTだとオッケーですけど。

>これはJISコードが
>\  = 5c
>ソ = 835c
>表 = 955c
>であり文字の後部を \ として検出したためだと思われますが・・・

投稿時間:2004/05/18(Tue) 18:19
投稿者名:えめす
Eメール:
URL :
タイトル:
Re^2: こんな方法も (MakeSureDirectoryPathExists)
>サブフォルダを含めたフォルダの一括作成
DOSのMD(make dir)コマンドはいける模様です。
(このご時世にDOSかとたたかれてしまいそうですが^^;)

ご参考までに・・

投稿時間:2004/05/19(Wed) 10:36
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: こんな方法も (MakeSureDirectoryPathExists)
> >サブフォルダを含めたフォルダの一括作成
> DOSのMD(make dir)コマンドはいける模様です。

Windows 95, 98, Me といった、9X系のMDコマンドでは拒否されてしまうかと思いますよ。
一括作成が可能なのは、Windows 2000、XP、2003等といった、NT系のMDコマンドですね。

# 細かい話ですが、厳密には、NT系のそれは「DOS」ではありません。
# 9X系にはDOSモードがありますが、NT系には無いからです(コンソールモードならあります)。
## スタートメニューから辿れる、CUIのウィンドウにしても、9X系の場合は、
## 「MS-DOS コマンド プロンプト」ですが、NT系では「コマンドプロンプト」になっていますよね。

投稿時間:2004/05/20(Thu) 12:36
投稿者名:えめす
Eメール:
URL :
タイトル:
Re^4: こんな方法も (MakeSureDirectoryPathExists)
> Windows 95, 98, Me といった、9X系のMDコマンドでは拒否されてしまうかと思いますよ。
> 一括作成が可能なのは、Windows 2000、XP、2003等といった、NT系のMDコマンドですね。
そうなんですかすみません 調べ足りずでした
> # 細かい話ですが、厳密には、NT系のそれは「DOS」ではありません。
> # 9X系にはDOSモードがありますが、NT系には無いからです(コンソールモードならあります)。
> ## スタートメニューから辿れる、CUIのウィンドウにしても、9X系の場合は、
> ## 「MS-DOS コマンド プロンプト」ですが、NT系では「コマンドプロンプト」になっていますよね。
そうですね。 Win3.1、9Xは形はGUIフェースですが、システム管理はまだまだDOSでした
デバイスにメモリを割り当てて・・とか黒い画面を頻繁に立ち上げなくてはならなかったですね
完全32BitOSであるNTや2000ではWindowsでシステム全体を仕切れるようになり、
本来のDOSは必要なくなりました。WindowsがDOSを制御してますよね
昔セットアップに重宝したDOSのsys転送コマンドも コンソールに搭載されてませんね
最近のPCにはFDDがついてないから(CDブートでいいから)必要ないってことですかね

DOSはWindowsAPIで実装されているんなら MDコマンドは何が使われてるんでしょうね
それがわかれば 苦労はしないですが^^;