![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
VBScriptのバッチでの作成を考えています。
あるフォルダ(名をFolderとします)の中に、たくさんのサブフォルダが
あって、そこにあるファイルをすべてFolderに移動させたいと
思っています。
(ファイルはjpg画像ファイルだけです。)
たとえば、Folderの下に、Folder_Bというサブフォルダがあって、
更にその下にFolder_Cがあり、その中には1.jpgというファイルが
あったとしたら、バッチ実行後、Folderの直下に1.jpgがあり、
(可能であれば)フォルダはすべて消えているという具合です。
ファイルの移動自体はファイルシステムオブジェクトのFile.Moveで行い、
最後にディレクトリを列挙して削除していけばいいんだろうなという
ところはわかります。
しかし、フォルダをサブフォルダも含めてすべて舐めて、そこから
ファイルを移動していくというロジックに悩んでいます。
アドバイスいただけないでしょうか。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_12.png?5a7ff87)
No.2ベストアンサー
- 回答日時:
この手のコードは 「FileSystemObject 再帰」 のキーワードでググればたくさんサンプルが見つかる。
Excel VBA の標準モジュールなどでステップ実行すると動きを確認できる。
ロジックとしては、、、
サブフォルダーが存在しなくなる最深フォルダーまで潜る。
そのフォルダーにあるファイル群を移動させる。
1階層上のフォルダーに戻る。
先ほどのフォルダーを削除する。
ってのを再帰処理で行う。
Const rootPath = "E:\test\"
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim rootDir
Set rootDir = fso.GetFolder(rootPath)
Call MoveFiles(rootDir)
' 引数としてフォルダー オブジェクトをもらう
Sub MoveFiles(aDir)
' 引数で得たフォルダー内にサブフォルダーがあれば再帰する。
Dim subDir
For Each subDir In aDir.SubFolders
Call MoveFiles(subDir) ' サブフォルダーで再帰処理
subDir.Delete ' 戻ってきたら (フォルダー内が空であるはずなので) フォルダーを削除する
Next
' 引数で得たフォルダー内のファイル群を移動させる。
Dim f
For Each f In adir.Files
f.Move(rootPath)
Next
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ファイル一覧表を使ったファイルの移動 5 2022/08/10 15:37
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Excel(エクセル) エクセルのファイルが開かない 4 2022/04/22 15:07
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2022/10/26 17:14
- ソフトウェア フォルダ内の全サブフォルダ内のファイルパスをサブフォルダ毎に行を分けてリスト化したい 1 2022/11/13 10:27
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- AJAX RPA(PowerAutomate)の実装について 1 2023/07/31 13:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
複数フォルダをまとめて移動するバッチ
Windows Vista・XP
-
沢山のフォルダにあるファイルを上の階層に出すには?
Windows Me・NT・2000
-
サブフォルダー内のPDFファイルを別フォルダにコピーするVBA
Excel(エクセル)
-
-
4
大量のフォルダからひとつのフォルダにファイルをまとめたい!
その他(ソフトウェア)
-
5
あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい
Visual Basic(VBA)
-
6
VBA フォルダ名に特定の文字を含むフォルダを別フォルダにコピーするコードを教えて下さい
Visual Basic(VBA)
-
7
VBAにおいて、ファイルの移動にMoveFileを使っていますが、
Visual Basic(VBA)
-
8
サブフォルダ含むフォルダ内の全ファイルから指定文字列を含んだファイルの情報を一覧出力させたい
Visual Basic(VBA)
-
9
ファイル名と同名のフォルダを自動作成して移動させる方法はありますか?
Access(アクセス)
-
10
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
11
多量のファイルをフォルダに自動振り分けするマクロを教えて下さい。
PowerPoint(パワーポイント)
-
12
エクセル VBA ファイルをフォルダへ移動させる
その他(Microsoft Office)
-
13
ファイル名から該当フォルダへ移動
Visual Basic(VBA)
-
14
エクセルマクロで指定フォルダの下層フォルダにあるファイル全てを集計したいのですが、1階層下のフォルダ
Excel(エクセル)
-
15
マクロ VBA ファイル名を連番でつけたいのですが
Access(アクセス)
-
16
ファイル名を該当フォルダ内から検索して移動
その他(プログラミング・Web制作)
-
17
コマンドプロンプトの「%1」と「%~1」の違いがわからない
その他(プログラミング・Web制作)
-
18
多数のサブディレクトリ内のファイルを一括コピーする
その他(プログラミング・Web制作)
-
19
FSO.CopyFileでのエラー無視方法
その他(Microsoft Office)
-
20
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
error RC2104について
-
日付を指定しファイルを削除す...
-
VBA Bookの表示、非表示
-
指定したフォルダ直下のファイ...
-
サブフォルダ内のファイルを全...
-
バッチファイルでフォルダとフ...
-
Tera Termでのコマンド流し込み...
-
Thunderbird 振り分けされなく...
-
フォルダのサムネイル画像
-
C:\\Documents and Settingsが...
-
2010でShiftキーを使っても自動...
-
元のフォルダに矢印キーで帰りたい
-
コマンドの戻り値が「130」
-
【マクロ】フォルダを2つのモ...
-
ADでユーザ名と表示名をコマン...
-
ブラウザにIPアドレスを直打ち...
-
大量のフォルダへのハイパーリ...
-
NetBTエラーとbrowserエラーが多発
-
ADのDC移行の手順を教えてください
-
DIGコマンドでstatusがREFUSED...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サブフォルダ内のファイルを全...
-
C#でCSVファイルをリストビュー...
-
error RC2104について
-
EXCELのSheetを自動更新できな...
-
指定したフォルダ直下のファイ...
-
VBA Bookの表示、非表示
-
日付を指定しファイルを削除す...
-
指定したもの以外の削除方法
-
リストボックスに表示されたフ...
-
タスクバーのファイル表示について
-
顧客から返ってきたExcel Sheet...
-
日本語プログラミング「なでしこ」
-
拡張子のアイコンを取得
-
fgetsのfはどういう意味でしょ...
-
エクセルデータをweb上にアップ...
-
ネットワークドライブ先のファ...
-
vbaでDLL参照しているエクセル...
-
たくさんのフォルダーの中から...
-
Thunderbird 振り分けされなく...
-
Tera Termでのコマンド流し込み...
おすすめ情報