PowerShell

デジカメで撮影した写真・動画を日付で自動コピーする PowerShell スクリプトを作った話

デジカメで撮影した写真・動画を日付で自動コピーする PowerShell スクリプトを作った話アイキャッチ

はじめに

デジカメやアクションカムで撮影した写真がたまってきたから整理したいな

特定の日付以降の写真だけコピーしたい

フォルダ構造が複雑でSDカードのどこに保管されているかわからない

という場面はよくあります。

しかし、手作業でファイルを探したり、種類ごとに仕分けしたりするのはかなり面倒です。

そこで今回、ユーザーが入力した日付以降のファイルだけをコピーする PowerShell スクリプトを作成しました。
コピー先フォルダの作成や、ファイル名の重複回避にも対応しているため、バックアップや整理作業が一気に楽になります。

この記事では、スクリプトの説明からコード全文、応用方法まで分かりやすく紹介していきます。

PowerShell でバックアップファイルを月別フォルダに自動整理するスクリプトを作った話|ログ付き・削除処理ありアイキャッチ

PowerShell

2025/12/5

PowerShell でバックアップファイルを月別フォルダに自動整理するスクリプトを作った話|ログ付き・削除処理あり

はじめに WordPress のバックアップ運用では、BackWPup や UpdraftPlus などのプラグインが生成する ZIP ファイルが日々蓄積されていきます。しかし、そのまま放置しているとバックアップフォルダが膨れ上がり、どのファイルがいつのものなのか分かりづらくなる…という問題が発生します。 そこで今回は、バックアップファイルを月別フォルダに自動振り分けし、コピー後に元ファイルを削除、さらにログも月別で保管する PowerShell スクリプトを開発しました。 今回開発した PowerShe ...

ReadMore

デジカメで撮影した写真・動画を日付で自動コピーする PowerShell スクリプトを作った話アイキャッチ

PowerShell

2025/12/4

デジカメで撮影した写真・動画を日付で自動コピーする PowerShell スクリプトを作った話

はじめに という場面はよくあります。 しかし、手作業でファイルを探したり、種類ごとに仕分けしたりするのはかなり面倒です。 そこで今回、ユーザーが入力した日付以降のファイルだけをコピーする PowerShell スクリプトを作成しました。コピー先フォルダの作成や、ファイル名の重複回避にも対応しているため、バックアップや整理作業が一気に楽になります。 今回作ったスクリプトでできること この PowerShell では、次のような処理が自動で行えます。 ユーザーが入力した日付(YYYYMMDD形式)以降に作成さ ...

ReadMore

【PowerShell】メニューからIPアドレスとプロキシ設定を切り替えるスクリプトを作った話のアイキャッチ

PowerShell

2025/12/4

【PowerShell】メニューからIPアドレスとプロキシ設定を切り替えるスクリプトを作った話

― 会社/自宅ネットワークをワンタッチ切り替え ― ノートPCを職場と自宅のどちらでも使っていると、ネットワーク設定の切り替えが地味に面倒です。 会社では固定IP必須+社内プロキシ必須 自宅では固定IPまたはDHCP+プロキシ不要 さらに場所によって IP・DNS・WINS の設定値も違う… こういう環境だと、毎回「ネットワークの詳細設定」を開いて手作業で変更しなければならず、結構なストレスになります。 そこで今回、メニューから選択するだけでネットワーク設定とプロキシ設定を一括切り替えできる PowerS ...

ReadMore

PowerShellをバッチファイルから起動する方法|管理者権限チェック付きのサンプルつきのアイキャッチ画像

PowerShell

2025/12/4

PowerShellをバッチファイルから起動する方法|管理者権限チェック付きのサンプルつき

はじめに PowerShell のスクリプトを実行したいときに、「バッチファイルから起動したい」という場面は意外と多いです。特に、PowerShell を触らないユーザーにも簡単に使ってもらいたい場合は、ダブルクリックで実行できる .bat のほうが便利ですよね。 本記事では、バッチファイルから PowerShell を起動する基本の方法から、管理者権限を自動でチェックして昇格してくれる実践的なバッチコードまで詳しく解説します。 サンプルとして、eth1-Switch-NetworkWithProxy.p ...

ReadMore

PowerShellでHEICをJPGに一括変換するスクリプトのアイキャッチ

PowerShell

2025/12/4

【Windowsで簡単変換】PowerShellでHEICをJPGに一括変換するスクリプトを作ったので紹介します

はじめに iPhone で撮った写真は標準で HEIC(HEIF)形式になっています。ファイルサイズが小さくて便利なのですが、Windows の古いアプリやブログサービスによっては JPG の方が扱いやすいことがあります。 今回は、Windows に標準で入っている WIC(Windows Imaging Component)を使って HEIC → JPG へ変換する PowerShell スクリプトを作ったのでご紹介します。 フォルダ内の HEIC をまとめて JPEG 化 画質(Quality)を自由 ...

ReadMore

今回作ったスクリプトでできること

この PowerShell では、次のような処理が自動で行えます。

  • ユーザーが入力した日付(YYYYMMDD形式)以降に作成されたファイルだけコピー
  • ファイル形式(jpg / mp4 など)の複数指定に対応
  • コピー元・コピー先フォルダは変数で自由に変更可能
  • コピー先フォルダが存在しない場合は自動作成
  • ファイル名が重複した場合は (1) (2) のように番号を付けて上書き防止
  • 階層をまたいでファイル検索(-Recurse)

写真・動画の整理はもちろん、SDカードのバックアップや NAS への保存にも使える汎用スクリプトです。

スクリプトの動作イメージ

日付入力を求めるPowerShell
  1. PowerShell が起動すると「入力した日付以降をコピー (YYYYMMDD)」と表示される
  2. 入力した日付以降に作成された JPG・MP4 をすべて検索
  3. コピー先フォルダにファイルをコピー
  4. 同名ファイルがある場合は自動的に (1) を付与して安全に保存

例えば、
20251201 を入力すれば、2025年12月1日以降のファイルを一括コピーできます。

仕組みのポイント解説

ここからは、コードの重要ポイントを初心者でも理解しやすいよう解説していきます。

コピー元・先・拡張子を変数で管理

$sourceFolder = "F:\"               # SDカードなど
$destinationFolder = "D:\data1\sd\photo"
$extensions = "jpg,mp4"

記事の読者が自分の環境に合わせて編集できるよう、パラメータは上部にまとめていますのでご自身の環境に合わせてご変更ください。

日付をユーザー入力で受け取る

$startDateString = Read-Host "入力した日付以降をコピー (YYYYMMDD)"
$startDate = [datetime]::ParseExact($startDateString, "yyyyMMdd", $null)

撮影日基準で抽出したいので、任意の日付を指定できるようになっています。

ParseExact() を使うことで、YYYYMMDD形式以外はエラーにし、間違いを防ぎます。

コピー先フォルダが無い場合は自動作成

if (-Not (Test-Path -Path $destinationFolder)) {
  New-Item -ItemType Directory -Path $destinationFolder
}

初回実行時にフォルダを作り忘れていても安心です。

複数拡張子をまとめて処理

$extensionsList = $extensions -split "," | ForEach-Object { $_.Trim() }

jpg, mp4 などの文字列を、処理しやすいように配列に変換しています。
これにより、JPG と MP4 の両方をまとめて検索 → コピーという動作が可能になります。

指定日付以降のファイルを抽出

$files = Get-ChildItem -Path $sourceFolder -Recurse -Filter $searchPattern |
         Where-Object { $_.LastWriteTime -ge $startDate }
  • -Recurse:すべてのフォルダ階層から検索
  • LastWriteTime:ファイル更新日(撮影日が近い)

これにより、希望した日付以降のファイルだけが抽出されます。

ファイル名が重複したら連番を付与

while (Test-Path $destPath) {
  $destPath = Join-Path -Path $destinationFolder -ChildPath ("{0} ({1}){2}" -f $baseName, $counter, $extension)
  $counter++
}

指定フォルダの階層下にあるファイルを対象としているため、コピー先に同じ名前のファイルがある場合は自動で (1) (2) のようにリネームして保存します。

最後にファイルをコピー

Copy-Item -Path $file.FullName -Destination $destPath -Force
Write-Output "Copied: $($file.FullName) to $($destPath)"

コピーしたファイルのログも出力するので、後で確認できます。

自動コピースクリプトコード

# パラメータを固定値に設定
$sourceFolder = "F:\"
$destinationFolder = "D:\data1\sd\photo"
$extensions = "jpg,mp4"

# ユーザーに対話形式で日付を入力させる
$startDateString = Read-Host "入力した日付以降をコピー (YYYYMMDD)"

# 入力された日付をdatetime型に変換
try {
  $startDate = [datetime]::ParseExact($startDateString, "yyyyMMdd", $null)
} catch {
  Write-Output "Invalid date format. Please enter the date in YYYYMMDD format."
  exit
}

# フォルダパスの存在確認と作成
if (-Not (Test-Path -Path $destinationFolder)) {
  New-Item -ItemType Directory -Path $destinationFolder
}

# 拡張子のリストを作成及び前後の空白をトリム
$extensionsList = $extensions -split "," | ForEach-Object { $_.Trim() }

foreach ($extension in $extensionsList) {
  # 拡張子にワイルドカードを追加 (例: jpg -> *.jpg)
  $searchPattern = "*.$extension"

  # 指定日付以降で拡張子が一致するファイルを取得
  $files = Get-ChildItem -Path $sourceFolder -Recurse -Filter $searchPattern |
           Where-Object { $_.LastWriteTime -ge $startDate }

  foreach ($file in $files) {
    # コピー先のパス
    $destPath = Join-Path -Path $destinationFolder -ChildPath $file.Name
    
    # ファイル名の重複を避けるため、同じファイル名が存在した場合に番号を付加
    $counter = 1
    $baseName = [System.IO.Path]::GetFileNameWithoutExtension($file.Name)
    $extension = $file.Extension
    while (Test-Path $destPath) {
      $destPath = Join-Path -Path $destinationFolder -ChildPath ("{0} ({1}){2}" -f $baseName, $counter, $extension)
      $counter++
    }

    # ファイルをコピー
    Copy-Item -Path $file.FullName -Destination $destPath -Force
    Write-Output "Copied: $($file.FullName) to $($destPath)"
  }
}

実行例

実際にスクリプトを実行すると、以下のようなログが表示されます。

Copied: F:\DCIM\100MSDCF\IMG_2345.JPG to D:\data1\sd\photo\IMG_2345.JPG
Copied: F:\DCIM\100MSDCF\IMG_2346.JPG to D:\data1\sd\photo\IMG_2346 (1).JPG
Copied: F:\MOV\VID_0012.MP4 to D:\data1\sd\photo\VID_0012.MP4

重複があっても安全に保存されていることが分かります。

カスタマイズ方法

用途に合わせて簡単に変更できます。

① 対象拡張子を増やす

$extensions = "jpg, jpeg, png, mp4, mov, arw"

RAW や MOV にも対応できます。

② サブフォルダ構造ごとコピーしたい

Copy-Item -Recurse

を追加すればフォルダごとコピーできます。

③ 撮影日時(EXIF)で抽出したい

JPEGのEXIFタグ「DateTaken」を読み取り、撮影日でフィルタする処理も応用できます。

まとめ

  • 手動で写真・動画を探すより圧倒的にラク
  • 日付フィルタ+重複ファイル名回避で安全
  • 変数を変えるだけで好みに合わせてカスタマイズ可能
  • PowerShell の実践的なスクリプトとしても学びやすい

撮影データをよく扱う方、SDカードを定期的にバックアップしたい方には非常に便利です。

ぜひ、自分の用途に合わせてカスタマイズしてみてください!

PowerShell でバックアップファイルを月別フォルダに自動整理するスクリプトを作った話|ログ付き・削除処理ありアイキャッチ

PowerShell

2025/12/5

PowerShell でバックアップファイルを月別フォルダに自動整理するスクリプトを作った話|ログ付き・削除処理あり

はじめに WordPress のバックアップ運用では、BackWPup や UpdraftPlus などのプラグインが生成する ZIP ファイルが日々蓄積されていきます。しかし、そのまま放置しているとバックアップフォルダが膨れ上がり、どのファイルがいつのものなのか分かりづらくなる…という問題が発生します。 そこで今回は、バックアップファイルを月別フォルダに自動振り分けし、コピー後に元ファイルを削除、さらにログも月別で保管する PowerShell スクリプトを開発しました。 今回開発した PowerShe ...

ReadMore

デジカメで撮影した写真・動画を日付で自動コピーする PowerShell スクリプトを作った話アイキャッチ

PowerShell

2025/12/4

デジカメで撮影した写真・動画を日付で自動コピーする PowerShell スクリプトを作った話

はじめに という場面はよくあります。 しかし、手作業でファイルを探したり、種類ごとに仕分けしたりするのはかなり面倒です。 そこで今回、ユーザーが入力した日付以降のファイルだけをコピーする PowerShell スクリプトを作成しました。コピー先フォルダの作成や、ファイル名の重複回避にも対応しているため、バックアップや整理作業が一気に楽になります。 今回作ったスクリプトでできること この PowerShell では、次のような処理が自動で行えます。 ユーザーが入力した日付(YYYYMMDD形式)以降に作成さ ...

ReadMore

【PowerShell】メニューからIPアドレスとプロキシ設定を切り替えるスクリプトを作った話のアイキャッチ

PowerShell

2025/12/4

【PowerShell】メニューからIPアドレスとプロキシ設定を切り替えるスクリプトを作った話

― 会社/自宅ネットワークをワンタッチ切り替え ― ノートPCを職場と自宅のどちらでも使っていると、ネットワーク設定の切り替えが地味に面倒です。 会社では固定IP必須+社内プロキシ必須 自宅では固定IPまたはDHCP+プロキシ不要 さらに場所によって IP・DNS・WINS の設定値も違う… こういう環境だと、毎回「ネットワークの詳細設定」を開いて手作業で変更しなければならず、結構なストレスになります。 そこで今回、メニューから選択するだけでネットワーク設定とプロキシ設定を一括切り替えできる PowerS ...

ReadMore

PowerShellをバッチファイルから起動する方法|管理者権限チェック付きのサンプルつきのアイキャッチ画像

PowerShell

2025/12/4

PowerShellをバッチファイルから起動する方法|管理者権限チェック付きのサンプルつき

はじめに PowerShell のスクリプトを実行したいときに、「バッチファイルから起動したい」という場面は意外と多いです。特に、PowerShell を触らないユーザーにも簡単に使ってもらいたい場合は、ダブルクリックで実行できる .bat のほうが便利ですよね。 本記事では、バッチファイルから PowerShell を起動する基本の方法から、管理者権限を自動でチェックして昇格してくれる実践的なバッチコードまで詳しく解説します。 サンプルとして、eth1-Switch-NetworkWithProxy.p ...

ReadMore

PowerShellでHEICをJPGに一括変換するスクリプトのアイキャッチ

PowerShell

2025/12/4

【Windowsで簡単変換】PowerShellでHEICをJPGに一括変換するスクリプトを作ったので紹介します

はじめに iPhone で撮った写真は標準で HEIC(HEIF)形式になっています。ファイルサイズが小さくて便利なのですが、Windows の古いアプリやブログサービスによっては JPG の方が扱いやすいことがあります。 今回は、Windows に標準で入っている WIC(Windows Imaging Component)を使って HEIC → JPG へ変換する PowerShell スクリプトを作ったのでご紹介します。 フォルダ内の HEIC をまとめて JPEG 化 画質(Quality)を自由 ...

ReadMore

Windows PowerShell実践システム管理ガイド 第3版 商品画像

Windows PowerShell実践システム管理ガイド 第3版

Windows 管理者向けに、PowerShell を実務レベルで使いこなすための決定版です。
ユーザー管理・ログ取得・運用自動化など、現場で役立つスクリプトが満載です。
本格的な管理業務に踏み込む人に最適な1冊です。

おすすめポイント:

  • Active Directory・運用管理などリアルな業務内容に直結
  • スクリプト作例が豊富でそのまま仕事に活かせる
  • 初級〜中級を抜け、実務エンジニアとして成長できる内容

Rakuten

Amazon

Yahoo!ショッピング

  • この記事を書いた人
  • 最新記事

かじ

くまyyの管理人:かじ。 社内SEとして13年勤務、システム企画・開発をしているIT屋さん。 ガジェット好きなので最新ガジェットを追いかけるのが好き。 プログラミングなど自分の知識と経験をいろんな人に役立ってもらえるように記事を更新します!

-PowerShell
-,