【ファイルコピー】フォルダ内(階層あり)のファイルを別のフォルダへ

フォルダ内に保存されているファイルを別の階層があるフォルダ内にコピーしたいのだけど、簡単な方法はないのかな。

このような場合は、手作業では時間がかかって大変です。

いくつか簡単にコピーできる方法のうち、次の2つを解説します。

2つの方法
  • エクセルVBA
  • バッチファイル
  • コピー元:サブフォルダ内(フォルダ内のフォルダ内)にあるファイル
  • コピー先:別のサブフォルダ内へ
目次

コピーする例

フォルダの保存先「F:\sample\」にコピーもとのフォルダ「moto」とコピー先のフォルダ「saki」があります。

それぞれのフォルダ内にはさらにフォルダがあります。

フォルダ「moto」の2階層目のフォルダ内テキストファイルが保存されていて、そのファイルをフォルダ「saki」の2階層目にコピーします。

フォルダの階層

緑の枠で囲ったファイルをコピーします。

コピーするファイル

エクセルVBAの場合

はじめに、エクセルにコピーもととコピー先のパスを書き出します。

パス
2行目の入力例
  • 1列目(A列):F:\sample\moto\
  • 2列目(B列):m01
  • 3列目(C列):\test1.txt
  • 4列目(D列):1~3列目(A~C)の文字結合/CONCAT関数等
  • 5列目(E列):F:\sample\saki\
  • 6列目(F列):s01
  • 7列目(G列):\test1.txt
  • 8列目(H列):5~7列目(E~G)の文字結合/CONCAT関数等

以下はサンプルコードです。

Sub sample()
    Dim moto As String
    Dim saki As String
    Dim i As Long
    
    For i = 2 To 4
        moto = Cells(i, 4)
        saki = Cells(i, 8)
        FileCopy moto, saki
    Next i
End Sub

バッチファイルの場合

(1)エクセルのワークシートでコマンドを作成します。

エクセルのワークシート
2行目の入力例
  • 1列目(A列):copy /copyの後は半角空白
  • 2列目(B列):moto\m01
  • 3列目(C列):\test1.txt
  • 4列目(D列): saki\s01/sakiの前は半角空白
  • 5列目(E列):\test1copy.txt
  • 6列目(F列):1~5列目(A~E)の文字結合/CONCAT関数等・例:=CONCAT(A2:E2)

(2)フォルダ内に新規テキストファイルを作成します。

作成例:フォルダ内で右クリック>新規作成>テキストドキュメントをクリックします。

テキスト

ファイル名を付けます。日本語にすると実行できない場合があるので英文字を使います。

ファイル名

(3)エクセルで作ったコマンドをコピーして、テキストファイルに貼り付けます。

エクセルシート

テキストに貼り付けた状態です。

貼り付け

(4)テキストファイルをコピーし、ファイル名を変更します。「.txt」を「.bat」に変更します。

バッチファイルに変更

(5)バッチファイルを実行します。(ダブルクリック)

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次