PR

【Windows】同じファイルを一括コピーする方法|ファイル名変更・自動バックアップも解説

eyecatch_automatic_file-copy-rename Excel
記事内に広告が含まれています。

「毎月同じExcelファイルを30個作るのが面倒…」
「ファイル名を1つずつ変える作業でミスする…」

そんな作業、Windows標準機能で自動化できます。

この記事では、

  • 同じファイルを一括コピーする方法
  • ファイル名をまとめて変更する方法
  • バックアップを自動化する方法

を、コマンドプロンプト・PowerShell・バッチファイルを使って図解で解説します。

ファイルを一気にコピー・リネームできると、何が便利なの?

ファイルを一気にコピー・リネームできると、様々なメリットがあります!
例えば、

・ルーティン作業が効率化できて便利!
・ヒューマンエラーの防止につながる!
・ファイルのバックアップが簡単にとれる!

などが挙げられます。

ルーティン作業が効率化できて便利!

毎月同じファイルを複数コピーしないといけないとき、手作業でコピーするのって大変ですよね。。
例えば、日報みたいな「1日~31日」の日付分のファイルを作成したり、「支店①、支店②・・・」みたいに各拠点分をファイルを作成したり、、

そんなときに、いちいち手作業でコピー&リネームしなくても、一気に自動作成することができるので、とても便利です!

ヒューマンエラーの防止につながる!

手作業でファイルをコピーしていくとき、「文字の打ち間違い」や、「ファイルコピー漏れ」などミスが発生しがちです。ファイル数が多いと、気づいたとき絶望しますよね。。

手作業でやる限り、ミスが発生するのはしょうがないことだと思います。
自動化することはそのリスクを減らすことができるので、効率化もぐんと上がります!

ファイルのバックアップが簡単にできる!

ファイルを誤って削除したり、破損したときに備えて、ファイルのバックアップを定期的にとるケースはあると思います。

そのときにいちいちフォルダを見に行き、ファイルを選択して、バックアップフォルダにコピーする・・・手作業でやると面倒ですよね。。

そんなバックアップ作業も自動化できます!
バックアップ日別にファイルをコピーすることだって可能です!

ファイルを一気にコピー・リネームするには?

今まで手作業でやっていたことが、自動化できるとなるとワクワクしますよね!
では実際にどうすればいいか、順番に紹介していきます。

どの方法を使うべき?おすすめ早見表

ファイルを一括コピー・リネームする方法はいくつかありますが、目的によって使いやすい方法が変わります。

「とりあえず同じファイルを複数作りたい」のか、「毎回の作業を完全に自動化したい」のか、「すでにあるファイル名をまとめて変更したい」のかによって、選ぶ方法を変えるのがおすすめです。

やりたいことおすすめの方法向いているケース
同じファイルを複数コピーしたいコマンドプロンプト+Excel日報・請求書・支店別ファイルなどを一気に作りたい
毎回同じコピー作業を自動化したいバッチファイル定期バックアップや毎月の定型作業を自動化したい
ファイル名をまとめて変更したいPowerShell「1月」を「3月」に変えるなど、文字列を一括置換したい
Excel上でコピー内容を管理したいExcel VBAコピー元・コピー先を一覧で管理しながら実行したい

初心者の方は、まずは「コマンドプロンプト+Excel」から試すのがおすすめです。
Excelでコピー後のファイル名を一覧化できるため、どのファイルが作成されるのか確認しながら進められます。

一方で、毎回同じ作業を繰り返す場合は、バッチファイル化しておくと便利です。
一度作っておけば、次回からはファイルをダブルクリックするだけでコピーやバックアップを実行できます。

コマンドプロンプトを活用する方法

コマンドプロンプトは、Windowsに標準装備されているツールです。
文字で命令(コマンド)を入力することで、

  • ファイルコピー
  • フォルダ操作
  • 自動処理

などを実行できます。
ソフトをインストールしなくても使えるため、簡単なファイル操作を自動化したい場合に便利です。

icon_cmd
screen-capture_cmd

バッチファイルを活用する方法

バッチファイルは、拡張子が「.bat」となっているファイルです。
(エクセルだと、「.xlsx」というやつですね)

下のように、歯車みたいな見た目のファイルです。
「え、何か難しそう・・・」って思いますよね。実はこれ、メモ帳で作成できるのです!

icon_bat

バッチファイルは、
・毎回命令を記述する必要がない
・タスクスケジューラと組み合わせて、定期的な作業を自動化する

ときなどに便利なツールとなります。

PowerShellを活用する方法

PowerShellも、Windowsに標準装備されているツールです。
見た目はコマンドプロンプトに似ていますが、より高度なファイル操作や自動化処理ができます。

例えば、

  • ファイル名の一括変更
  • 条件付きコピー
  • フォルダ整理

など、大量ファイルを扱う作業に向いています。

icon_PowerShell
screen-capture_PowerShell

コマンドプロンプト×Excelで、ファイルをまとめてコピー

簡単なファイルコピーであれば、コマンドプロンプトを活用すると便利だと思います。
今回は「日報」というエクセルファイルを日付分コピーすることをゴールとし、そのやり方・流れを説明していきます!

コマンドプロンプトでファイルをコピーするには、「Copy」コマンドを使用します。

コマンドプロンプトでファイルコピーする方法

copy コピーするファイル コピー後のファイル

copyと記述することで、対象ファイルをコピーすることができます。

注意点としては、
・「copy」、「コピーするファイル」、「コピー後のファイル」それぞれの間には半角スペースを入力
・「コピーするファイル」、「コピー後のファイル」にはそれぞれ拡張子を記載する

 (エクセルファイルであれば「.xlsx」など)
などがあります。

コマンドプロンプトでファイルコピーすることはできますが、毎回手作業で記述するのは面倒なので、エクセルと組み合わせする方法を紹介します。

エクセルを使ってコマンド記述を効率的に!

ただコマンドプロンプトに記述する文を一つずつ書いていたら面倒ですよね。
少しでも楽するために、自分なりに考えた結果、エクセルを使ったら楽になるのでは?と思い、試してみました。

今回は、Cドライブの直下に「テスト」というフォルダを作成し、そのフォルダに格納している「日報」エクセルファイルをコピーしていきます。

「日報」というエクセルファイルを、1月1日~10日分でコピーする場合、以下のように記述します。
順番に解説していきたいと思います。

how-to-copy-file-by-cmd_No1

・A列:B列~I列に記載している文字列を結合したもの(コマンドプロンプトに貼る部分)
 ※今回はCONCATENATE関数を使用しました。(文字列を結合する関数)

how-to-copy-file-by-cmd_No2

・B列:使用するコマンドを記載
 ※今回はファイルコピーのため、「copy」コマンドを記載
・C、E列:半角スペースを入力
 ※見えにくいですが、下の画像の通り、半角スペースを入力しています。

how-to-copy-file-by-cmd_No3

・D列:「コピーするファイル」を記載
 ※拡張子を含むフルパスを入力しています。
・F~I列:「コピー後のファイル」を記載
 ※コピーするファイルの名前に、日付を追加しています。

※F~I列の解説について
 →今回はコピー元ファイルを1日~10日分コピーするため、H列に1月○日の記載を追加しました。
 →G列のアンダーバーはなくてもOKです!ファイル名を見やすくするため、今回は記載しました。
 →拡張子を記載しないと正しくファイルコピーができないため、I列に拡張子を記載しています。
F列の「コピー後のファイル1」には拡張子を記載せず、リネーム後のファイル名の後に拡張子を記述することにご注意ください。

作成したコマンドを、コマンドプロンプトに貼付

コマンドができたら、あとはコマンドプロンプトに貼るだけです!
エクセルのA列をコマンドプロンプトにコピー&ペーストすると、下の画像のように「ファイルをコピーしました」と表示されたら成功です!

では実際に、ファイルがコピーされているか確認しましょう。

how-to-copy-file-by-cmd_No4

こちらがコマンドを実行した結果です。
ちゃんと指定したファイルが作成されていますね!

how-to-copy-file-by-cmd_No5

今回は「日報」エクセルファイルをコピーしたため、日付がついているファイルは全て、「日報」エクセルファイルと同じ中身になります。

今回は日付でファイル名をコピーしましたが、日付を社員名や支店名などに変更することも可能です!
ぜひアレンジして、活用してみてください!

<応用>エクセルVBAでコマンドプロンプトに貼付する方法

エクセルで作成した数式を起動したコマンドプロンプトに貼ればOKなのですが、それすら自動化できないかな~と思い、色々模索していました。できるだけ手作業減らしたいですよね!

自動でコマンドプロンプトに貼ってくれる、エクセルVBAコードを作りました!
こちらを使えば、わざわざコマンドプロンプトを開かなくてもファイルコピーできました!

※実行前に注意|大量コピー・自動化はテスト環境で試すのがおすすめ

ファイルコピーの自動化は非常に便利ですが、設定を間違えると、
・不要なファイルを大量作成してしまう
・別フォルダにコピーしてしまう
・上書きしてしまう
などのトラブルにつながることがあります。

特にVBAやバッチファイルは、一度実行すると一気に処理されるため、最初は必ず「テスト用フォルダ」で動作確認するのがおすすめです。

例えば、
・デスクトップに「テスト」フォルダを作る
・ダミーファイルで試す
・2~3件だけコピーして確認する
など、小さい範囲で試してから本番運用すると安心です。

Sub コマンドプロンプトに一気に貼付()

    Dim shell As Object
    Dim lastRow As Integer
    Dim i As Integer
    Dim cmd As String
    Dim allCommands As String
    Dim ws As Worksheet
    
    '対象のシートを選択(「シート名」部分を変えてください)
    Set ws = ThisWorkbook.Worksheets("シート名")

    ' Shellオブジェクトの作成
    Set shell = CreateObject("WScript.Shell")

    ' A列の最終行を取得(コマンドプロンプトに貼付する数式がA列にあるため)
    lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

    ' コマンドを順番に一つの文字列に連結
    allCommands = ""
    For i = 2 To lastRow '2行目から貼付したい数式があるため、2行目~最終行で指定
        cmd = ws.Cells(i, 1).Value
        If cmd <> "" Then
            If allCommands <> "" Then
              allCommands = allCommands & " & " & cmd ' 前のコマンドと次のコマンドを繋げる
            Else
                allCommands = cmd ' 最初のコマンドはそのまま追加
            End If
        End If
    Next i

    ' 連結したコマンドを実行
    If allCommands <> "" Then
        shell.Run "cmd.exe /c " & allCommands
    End If

    ' オブジェクトの解放
    Set shell = Nothing
    Set ws = Nothing

End Sub

ファイル名をまとめて変更(バッチ/PowerShell)

ファイルを作成した後、ファイル名を間違えたので変えたい!というケースがあると思います。
ただコピーした後だと、また作り直すのは面倒ですよね。。ましてや既にファイルが編集されている場合などは作り直すわけにもいかず。。

そんなときは、ファイル名を一括で変更する方法が役に立ちます!
今回はコマンドプロンプトで実施する場合(バッチファイル)と、PowerShellで実施する場合の2パターンを紹介します!

今回は、「1月」ではなく「3月」であった場合で、ファイル名の「1月」を「3月」に変更する場合ということで紹介します!

バッチファイルでファイル名を一括変更する場合

コマンドプロンプトでファイル名の一部を変更する場合、バッチファイルを使用して変更します。
まずはバッチファイルの作り方から紹介します!

・メモ帳を開く
(メモ帳からバッチファイルを作成していきます)

how-to-make-bat_No1

・メモ帳にコマンドを入力する
入力するコマンドは、以下内容を使用します。コピペOKです。
※ファイルが格納されている場所・ファイル名に合わせ、適宜変更してください。

@echo off

setlocal EnableDelayedExpansion
cd /d "C:\Users\%USERNAME%\Desktop\テスト"

for %%f in (*1月*.xlsx) do (
    set "oldname=%%f"
    call set "newname=%%oldname:1月=3月%%"
    echo ren "%%f" "!newname!"
    ren "%%f" "!newname!"
)

pause

・「名前を付けて保存」する

how-to-make-bat_No2

「名前を付けて保存」するまでは普通の流れですが、バッチファイルとして保存するとき、次の点に注意が必要です!

・ファイル名の後ろに、「.bat」とつける(バッチファイルの拡張子です)
・「ファイルの種類」を、「すべてのファイル」に変更(バッチファイルとして保存するため)
・「エンコード」を「ANSI」に設定(文字化けを防ぐため)

how-to-make-bat_No3

すると、下のようにバッチファイルが作成されました!
このバッチファイルは、ダブルクリックもしくは右クリックで実行することができます。

how-to-make-bat_No4

保存したバッチファイルを実行すると、ファイル名の「1月」が、すべて「3月」に変わりました!

after-execution-bat

PowerShellでファイル名を一括変更する場合

PowerShellでファイル名を一部変更する場合、以下の手順で進めていきます。

PowerShell実行時の注意点

PowerShellでは強力な一括処理ができますが、誤ったコマンドを実行すると大量のファイル名が一瞬で変更されることがあります。
最初はコピー用のテストフォルダで試し、変更前後のファイル名を確認しながら実行するのがおすすめです。

・変更したいファイルが入っているフォルダのアドレスバーをクリックする

how-to-use-PowerShell_No1

・アドレスバーに「powershell」と入力し、Enterを押す

how-to-use-PowerShell_No2

すると、以下のようなファイルが入っているフォルダを表示したPowerShell画面が表示されます。

how-to-use-PowerShell_No3

・PowerShell画面に、以下コマンドを貼付してEnterを押す

Get-ChildItem -Filter "*1月*.xlsx" | Rename-Item -NewName { $_.Name -replace "1月", "3月" }
how-to-use-PowerShell_No4

すると、ファイル名にあった1月が、すべて3月に書き換えられました!

how-to-use-PowerShell_No5

ファイルのバックアップをまとめてとる方法

ファイルが削除されたり、破損したときに備えて、ファイルのバックアップを定期的にとっておきたいケースもあるかと思います。

ただ毎回毎回フォルダを見に行き、ファイルを選択して、バックアップフォルダにコピーする、、という作業を手動で行うのは面倒ですよね。

安心してください!その作業、自動化できます!

今回はバッチファイルで、「同じフォルダにバックアップをとる方法」と「日別にバックアップする方法」を紹介します。

注意|バックアップ先の容量不足・重複保存に注意

バックアップを自動化すると便利ですが、長期間運用していると、
・バックアップフォルダが肥大化する
・同じファイルが大量保存される
・ストレージ容量を圧迫する
ケースがあります。

特に「日別バックアップ」は便利な反面、ファイル数が急増しやすいため、定期的に古いバックアップを整理するのがおすすめです。
また、重要ファイルを扱う場合は、外付けSSDやクラウドストレージなど、別媒体へのバックアップも検討すると安心です。

同じフォルダにバックアップをとる方法

今回はデスクトップの「テスト」フォルダにある全ファイルを、「バックアップ」フォルダにコピーしていきます。

how-to-backup-by-bat_No1

ちなみにそれぞれのフォルダ内はこのようになっています。

how-to-backup-by-bat_No2

バッチファイルの作り方については、「バッチファイルでファイル名を一括変更する場合」で紹介していますので、ご参照ください。

下のように記述し、バッチファイルとして保存します。
※xcopy部分のフォルダパスは、適宜使用されるパスに変更して使用してください。

@echo off

echo バックアップを開始します…

xcopy "C:\Users\%USERNAME%\Desktop\テスト\*" "C:\Users\%USERNAME%\Desktop\バックアップ" /s /i /y

echo バックアップが完了しました。

pause

作成したバッチファイルを実行すると、バックアップフォルダに全ファイルをコピーすることができました!

how-to-backup-by-bat_No3

最新のファイルのみバックアップがとれればいいということであれば、この方法で問題ないと思います。

日別にバックアップをとる方法

今度はデスクトップの「バックアップ」フォルダに、バックアップ日ごとにフォルダを作成し、ファイルをコピーする方法を紹介します。

同じようにバッチファイルを作成します。
下のように記述し、バッチファイルとして保存します。
※コピー元とコピー先は、適宜使用されるパスに変更して使用してください。

@echo off

:: 今日の日付を yyyy-mm-dd 形式で取得
set "TODAY=%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%"

:: コピー元とコピー先を指定
set "SOURCE=C:\Users\%USERNAME%\Desktop\テスト"
set "BACKUP=C:\Users\%USERNAME%\Desktop\バックアップ\%TODAY%"

echo バックアップを開始します…

:: フォルダ作成(なければ作る)
mkdir "%BACKUP%" 2>nul

:: ファイルをコピー
xcopy "%SOURCE%\*" "%BACKUP%\" /s /i /y

echo バックアップが完了しました。保存先: %BACKUP%

pause

こちらのバッチファイルを実行すると、下のようにバックアップ日のフォルダが作成されました!

how-to-backup-by-bat_No4

フォルダの中身を確認してみると、しっかりバックアップをとることができていました!

how-to-backup-by-bat_No5

このバッチファイルをタスクスケジューラと組み合わせると、例えば自動で「毎日ファイルをコピーする」ような便利な活用も可能です!

まとめ:ファイルコピー・リネームが自動化できる、業務が劇的に効率化できる!

今回は、自動でファイルをコピー・リネームする方法を紹介しました。

手作業でやっていたことが自動化できると、業務が劇的に効率化できます!
ぜひ活用して、ともに業務効率化の道を歩みましょう!

この記事が役に立ったと思った場合、ブックマークやシェアしてもらえると嬉しいです。
また、質問やこんな方法を紹介してほしい!などありましたら、お気軽にコメントしてください。

最後まで読んでいただき、ありがとうございました。

■作業効率を上げたい方へ

Excel作業を1日何時間も行うなら、マウス環境も生産性に直結します。
私は自宅でMX ERGO Sを使っていますが、手首の疲労がかなり減りました。

👉 1日5時間使って分かった本音レビューはこちら

ろじゃー

仕事・子育てに奮闘中の社会人です。
仕事でも日常生活でも、ちょっとでも便利になることが紹介できるブログを書いています!
 
仕事柄、PC操作やエクセル、VBAなどは得意です!
Excel歴は10年以上の事務職。
関数やVBAを活用して、資料作成やデータ分析をはじめとした様々な業務の効率化・自動化に取り組んできました。
 
このブログでは、実際の業務で使える効率化テクニックを発信しています。
「わからない」や「困った」など問題を抱える方や、もっと効率化したいと思っている方に、少しでも役立てれば幸いです!

ご質問・ご相談など、お気軽にご連絡ください。

🥷 「現代で暮らすゆる忍者」ラインスタンプシリーズ公開中!日常や仕事、夫婦の会話など様々なシーンを製作しています
▶ LINEスタンプ一覧はこちら

ろじゃーをフォローする
ご質問・ご相談はこちらへ!
 ろじゃー|日々、ちょっとずつ良くなることを目指すブロガー
Excel歴10年以上。VBAや関数、業務効率化などを発信中。
📩 お問い合わせはこちら
Excel
シェアする
ろじゃーをフォローする

コメント

タイトルとURLをコピーしました