
VBScriptのバッチでの作成を考えています。
あるフォルダ(名をFolderとします)の中に、たくさんのサブフォルダが
あって、そこにあるファイルをすべてFolderに移動させたいと
思っています。
(ファイルはjpg画像ファイルだけです。)
たとえば、Folderの下に、Folder_Bというサブフォルダがあって、
更にその下にFolder_Cがあり、その中には1.jpgというファイルが
あったとしたら、バッチ実行後、Folderの直下に1.jpgがあり、
(可能であれば)フォルダはすべて消えているという具合です。
ファイルの移動自体はファイルシステムオブジェクトのFile.Moveで行い、
最後にディレクトリを列挙して削除していけばいいんだろうなという
ところはわかります。
しかし、フォルダをサブフォルダも含めてすべて舐めて、そこから
ファイルを移動していくというロジックに悩んでいます。
アドバイスいただけないでしょうか。

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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
沢山のフォルダにあるファイルを上の階層に出すには?
Windows Me・NT・2000
-
大量のフォルダからひとつのフォルダにファイルをまとめたい!
その他(ソフトウェア)
-
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
-
4
VBA フォルダ名に特定の文字を含むフォルダを別フォルダにコピーするコードを教えて下さい
Visual Basic(VBA)
-
5
VBS サブフォルダの再帰処理について
その他(プログラミング・Web制作)
-
6
複数フォルダをまとめて移動するバッチ
Windows Vista・XP
-
7
サブフォルダー内のPDFファイルを別フォルダにコピーするVBA
Excel(エクセル)
-
8
エクセルのカメラ機能を、700個以上使っているため重くて困ってます。
Excel(エクセル)
-
9
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
10
VBScript でサブフォルダも含めて、フォルダごとコピーを実行するには?
Microsoft ASP
-
11
エクセル マクロ オートフィルの終点の指定について
Excel(エクセル)
-
12
VBScript フォルダ以下からファイルの検索、コピー
その他(プログラミング・Web制作)
-
13
バッチを用いたフォルダの自動移動
Visual Basic(VBA)
-
14
エクセルマクロで指定フォルダの下層フォルダにあるファイル全てを集計したいのですが、1階層下のフォルダ
Excel(エクセル)
-
15
あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォルダ内のファイルを全...
-
error RC2104について
-
NetBTエラーとbrowserエラーが多発
-
Thunderbird 振り分けされなく...
-
Tera Termでのコマンド流し込み...
-
xcopyバッチを管理者として実行...
-
java auto updaterとは何でしょ...
-
Teratermで、条件分岐させたい
-
フォルダについて。
-
MODE関数を文字でできる関数は...
-
Windows11の「スタンバイ」がな...
-
2010でShiftキーを使っても自動...
-
batファイルの実行が1行目のみ...
-
Windowsでマシンスペックをテキ...
-
マクロでPDFを印刷する方法
-
撮影後、SDカードに作成される...
-
ディレクトリ数のみを取得する...
-
icaclsの読み方
-
VBAのタイマー
-
大文字はできるだけ使わない方...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サブフォルダ内のファイルを全...
-
error RC2104について
-
指定したもの以外の削除方法
-
VBA Bookの表示、非表示
-
エクセルで管理できるフリーの...
-
バッジファイルで削除できない...
-
EXCELのSheetを自動更新できな...
-
エクセル VBAでこれは難しいで...
-
指定したフォルダ直下のファイ...
-
C#でCSVファイルをリストビュー...
-
vbaでDLL参照しているエクセル...
-
隠されたファイル
-
タスクバーのファイル表示について
-
バッチファイルでフォルダとフ...
-
Visual Studio 2008で新規プロ...
-
VSC# ListViewへのドラッグ&ド...
-
意味不明のアイコンとプログラ...
-
Visual C++ 2005 Express Editi...
-
vbからのファイル操作について
-
1フォルダに「A.xls」、「B.xl...
おすすめ情報