「毎月同じExcelファイルを30個作るのが面倒…」
「ファイル名を1つずつ変える作業でミスする…」
そんな作業、Windows標準機能で自動化できます。
この記事では、
- 同じファイルを一括コピーする方法
- ファイル名をまとめて変更する方法
- バックアップを自動化する方法
を、コマンドプロンプト・PowerShell・バッチファイルを使って図解で解説します。
ファイルを一気にコピー・リネームできると、何が便利なの?
ファイルを一気にコピー・リネームできると、様々なメリットがあります!
例えば、
・ルーティン作業が効率化できて便利!
・ヒューマンエラーの防止につながる!
・ファイルのバックアップが簡単にとれる!
などが挙げられます。
ルーティン作業が効率化できて便利!
毎月同じファイルを複数コピーしないといけないとき、手作業でコピーするのって大変ですよね。。
例えば、日報みたいな「1日~31日」の日付分のファイルを作成したり、「支店①、支店②・・・」みたいに各拠点分をファイルを作成したり、、
そんなときに、いちいち手作業でコピー&リネームしなくても、一気に自動作成することができるので、とても便利です!
ヒューマンエラーの防止につながる!
手作業でファイルをコピーしていくとき、「文字の打ち間違い」や、「ファイルコピー漏れ」などミスが発生しがちです。ファイル数が多いと、気づいたとき絶望しますよね。。
手作業でやる限り、ミスが発生するのはしょうがないことだと思います。
自動化することはそのリスクを減らすことができるので、効率化もぐんと上がります!
ファイルのバックアップが簡単にできる!
ファイルを誤って削除したり、破損したときに備えて、ファイルのバックアップを定期的にとるケースはあると思います。
そのときにいちいちフォルダを見に行き、ファイルを選択して、バックアップフォルダにコピーする・・・手作業でやると面倒ですよね。。
そんなバックアップ作業も自動化できます!
バックアップ日別にファイルをコピーすることだって可能です!
ファイルを一気にコピー・リネームするには?
今まで手作業でやっていたことが、自動化できるとなるとワクワクしますよね!
では実際にどうすればいいか、順番に紹介していきます。
どの方法を使うべき?おすすめ早見表
ファイルを一括コピー・リネームする方法はいくつかありますが、目的によって使いやすい方法が変わります。
「とりあえず同じファイルを複数作りたい」のか、「毎回の作業を完全に自動化したい」のか、「すでにあるファイル名をまとめて変更したい」のかによって、選ぶ方法を変えるのがおすすめです。
| やりたいこと | おすすめの方法 | 向いているケース |
|---|---|---|
| 同じファイルを複数コピーしたい | コマンドプロンプト+Excel | 日報・請求書・支店別ファイルなどを一気に作りたい |
| 毎回同じコピー作業を自動化したい | バッチファイル | 定期バックアップや毎月の定型作業を自動化したい |
| ファイル名をまとめて変更したい | PowerShell | 「1月」を「3月」に変えるなど、文字列を一括置換したい |
| Excel上でコピー内容を管理したい | Excel VBA | コピー元・コピー先を一覧で管理しながら実行したい |
初心者の方は、まずは「コマンドプロンプト+Excel」から試すのがおすすめです。
Excelでコピー後のファイル名を一覧化できるため、どのファイルが作成されるのか確認しながら進められます。
一方で、毎回同じ作業を繰り返す場合は、バッチファイル化しておくと便利です。
一度作っておけば、次回からはファイルをダブルクリックするだけでコピーやバックアップを実行できます。
コマンドプロンプトを活用する方法
コマンドプロンプトは、Windowsに標準装備されているツールです。
文字で命令(コマンド)を入力することで、
- ファイルコピー
- フォルダ操作
- 自動処理
などを実行できます。
ソフトをインストールしなくても使えるため、簡単なファイル操作を自動化したい場合に便利です。


バッチファイルを活用する方法
バッチファイルは、拡張子が「.bat」となっているファイルです。
(エクセルだと、「.xlsx」というやつですね)
下のように、歯車みたいな見た目のファイルです。
「え、何か難しそう・・・」って思いますよね。実はこれ、メモ帳で作成できるのです!

バッチファイルは、
・毎回命令を記述する必要がない
・タスクスケジューラと組み合わせて、定期的な作業を自動化する
ときなどに便利なツールとなります。
PowerShellを活用する方法
PowerShellも、Windowsに標準装備されているツールです。
見た目はコマンドプロンプトに似ていますが、より高度なファイル操作や自動化処理ができます。
例えば、
- ファイル名の一括変更
- 条件付きコピー
- フォルダ整理
など、大量ファイルを扱う作業に向いています。


コマンドプロンプト×Excelで、ファイルをまとめてコピー
簡単なファイルコピーであれば、コマンドプロンプトを活用すると便利だと思います。
今回は「日報」というエクセルファイルを日付分コピーすることをゴールとし、そのやり方・流れを説明していきます!
コマンドプロンプトでファイルをコピーするには、「Copy」コマンドを使用します。
コマンドプロンプトでファイルコピーする方法
copy コピーするファイル コピー後のファイルcopyと記述することで、対象ファイルをコピーすることができます。
注意点としては、
・「copy」、「コピーするファイル」、「コピー後のファイル」それぞれの間には半角スペースを入力
・「コピーするファイル」、「コピー後のファイル」にはそれぞれ拡張子を記載する
(エクセルファイルであれば「.xlsx」など)
などがあります。
コマンドプロンプトでファイルコピーすることはできますが、毎回手作業で記述するのは面倒なので、エクセルと組み合わせする方法を紹介します。
エクセルを使ってコマンド記述を効率的に!
ただコマンドプロンプトに記述する文を一つずつ書いていたら面倒ですよね。
少しでも楽するために、自分なりに考えた結果、エクセルを使ったら楽になるのでは?と思い、試してみました。
今回は、Cドライブの直下に「テスト」というフォルダを作成し、そのフォルダに格納している「日報」エクセルファイルをコピーしていきます。
「日報」というエクセルファイルを、1月1日~10日分でコピーする場合、以下のように記述します。
順番に解説していきたいと思います。

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

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

・D列:「コピーするファイル」を記載
※拡張子を含むフルパスを入力しています。
・F~I列:「コピー後のファイル」を記載
※コピーするファイルの名前に、日付を追加しています。
※F~I列の解説について
→今回はコピー元ファイルを1日~10日分コピーするため、H列に1月○日の記載を追加しました。
→G列のアンダーバーはなくてもOKです!ファイル名を見やすくするため、今回は記載しました。
→拡張子を記載しないと正しくファイルコピーができないため、I列に拡張子を記載しています。
F列の「コピー後のファイル1」には拡張子を記載せず、リネーム後のファイル名の後に拡張子を記述することにご注意ください。
作成したコマンドを、コマンドプロンプトに貼付
コマンドができたら、あとはコマンドプロンプトに貼るだけです!
エクセルのA列をコマンドプロンプトにコピー&ペーストすると、下の画像のように「ファイルをコピーしました」と表示されたら成功です!
では実際に、ファイルがコピーされているか確認しましょう。

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

今回は「日報」エクセルファイルをコピーしたため、日付がついているファイルは全て、「日報」エクセルファイルと同じ中身になります。
今回は日付でファイル名をコピーしましたが、日付を社員名や支店名などに変更することも可能です!
ぜひアレンジして、活用してみてください!
<応用>エクセル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月」に変更する場合ということで紹介します!
バッチファイルでファイル名を一括変更する場合
コマンドプロンプトでファイル名の一部を変更する場合、バッチファイルを使用して変更します。
まずはバッチファイルの作り方から紹介します!
・メモ帳を開く
(メモ帳からバッチファイルを作成していきます)

・メモ帳にコマンドを入力する
入力するコマンドは、以下内容を使用します。コピペ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・「名前を付けて保存」する

「名前を付けて保存」するまでは普通の流れですが、バッチファイルとして保存するとき、次の点に注意が必要です!
・ファイル名の後ろに、「.bat」とつける(バッチファイルの拡張子です)
・「ファイルの種類」を、「すべてのファイル」に変更(バッチファイルとして保存するため)
・「エンコード」を「ANSI」に設定(文字化けを防ぐため)

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

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

PowerShellでファイル名を一括変更する場合
PowerShellでファイル名を一部変更する場合、以下の手順で進めていきます。
PowerShell実行時の注意点
PowerShellでは強力な一括処理ができますが、誤ったコマンドを実行すると大量のファイル名が一瞬で変更されることがあります。
最初はコピー用のテストフォルダで試し、変更前後のファイル名を確認しながら実行するのがおすすめです。
・変更したいファイルが入っているフォルダのアドレスバーをクリックする

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

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

・PowerShell画面に、以下コマンドを貼付してEnterを押す
Get-ChildItem -Filter "*1月*.xlsx" | Rename-Item -NewName { $_.Name -replace "1月", "3月" }
すると、ファイル名にあった1月が、すべて3月に書き換えられました!

ファイルのバックアップをまとめてとる方法
ファイルが削除されたり、破損したときに備えて、ファイルのバックアップを定期的にとっておきたいケースもあるかと思います。
ただ毎回毎回フォルダを見に行き、ファイルを選択して、バックアップフォルダにコピーする、、という作業を手動で行うのは面倒ですよね。
安心してください!その作業、自動化できます!
今回はバッチファイルで、「同じフォルダにバックアップをとる方法」と「日別にバックアップする方法」を紹介します。
注意|バックアップ先の容量不足・重複保存に注意
バックアップを自動化すると便利ですが、長期間運用していると、
・バックアップフォルダが肥大化する
・同じファイルが大量保存される
・ストレージ容量を圧迫する
ケースがあります。
特に「日別バックアップ」は便利な反面、ファイル数が急増しやすいため、定期的に古いバックアップを整理するのがおすすめです。
また、重要ファイルを扱う場合は、外付けSSDやクラウドストレージなど、別媒体へのバックアップも検討すると安心です。
同じフォルダにバックアップをとる方法
今回はデスクトップの「テスト」フォルダにある全ファイルを、「バックアップ」フォルダにコピーしていきます。

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

バッチファイルの作り方については、「バッチファイルでファイル名を一括変更する場合」で紹介していますので、ご参照ください。
下のように記述し、バッチファイルとして保存します。
※xcopy部分のフォルダパスは、適宜使用されるパスに変更して使用してください。
@echo off
echo バックアップを開始します…
xcopy "C:\Users\%USERNAME%\Desktop\テスト\*" "C:\Users\%USERNAME%\Desktop\バックアップ" /s /i /y
echo バックアップが完了しました。
pause作成したバッチファイルを実行すると、バックアップフォルダに全ファイルをコピーすることができました!

最新のファイルのみバックアップがとれればいいということであれば、この方法で問題ないと思います。
日別にバックアップをとる方法
今度はデスクトップの「バックアップ」フォルダに、バックアップ日ごとにフォルダを作成し、ファイルをコピーする方法を紹介します。
同じようにバッチファイルを作成します。
下のように記述し、バッチファイルとして保存します。
※コピー元とコピー先は、適宜使用されるパスに変更して使用してください。
@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こちらのバッチファイルを実行すると、下のようにバックアップ日のフォルダが作成されました!

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

このバッチファイルをタスクスケジューラと組み合わせると、例えば自動で「毎日ファイルをコピーする」ような便利な活用も可能です!
まとめ:ファイルコピー・リネームが自動化できる、業務が劇的に効率化できる!
今回は、自動でファイルをコピー・リネームする方法を紹介しました。
手作業でやっていたことが自動化できると、業務が劇的に効率化できます!
ぜひ活用して、ともに業務効率化の道を歩みましょう!
この記事が役に立ったと思った場合、ブックマークやシェアしてもらえると嬉しいです。
また、質問やこんな方法を紹介してほしい!などありましたら、お気軽にコメントしてください。
最後まで読んでいただき、ありがとうございました。
■作業効率を上げたい方へ
Excel作業を1日何時間も行うなら、マウス環境も生産性に直結します。
私は自宅でMX ERGO Sを使っていますが、手首の疲労がかなり減りました。
👉 1日5時間使って分かった本音レビューはこちら



コメント