【PowerShell】【キーで連番】ファイル名を一括でリネームする方法

スポンサーリンク
アイキャッチ 猫PowerShell
スポンサーリンク

こんにちは!前回はファイル名を一括でリネームする方法について、ご紹介いたしました。
今回はファイル名に連番を振る際にキーを設定してキーの値が変わった時に連番が初期化する方法をご紹介します。

前回の記事はこちらです!
良かったらご覧ください。

※ 筆者がC#での書き方が慣れているため、もっとより良い記述方法があるかもしれません。
その際は記事を更新させていただきます。

前回の記事では、Rename-Itemを使用していましたが、今回は出力先フォルダを変更したかったので、Copy-Itemを使用して、ファイル名を変更しながらコピー処理をする方法を取りました。

スポンサーリンク

やりたいこと

こちらが処理前のディレクトリ構成です。

処理前のフォルダ構成

各画像ファイル名の頭4桁「a001」等をキーに連番を振っていきます。
例えば「a001」から「a002」に変わると、また連番が001始まりになります。

処理後のフォルダ構成のイメージ
スポンサーリンク

サンプルコード

# 1.フォルダパス設定
$in_folder = "c:\sample\in"
$out_folder = "c:\sample\out"

# 2.処理するファイル一覧情報を取得
$file_list = Get-ChildItem $in_folder | sort Name

# 3.連番付与するための変数を初期化
$cnt = 0
$hold_key = ""
foreach($file in $file_list){
    # 4.コピー元パス設定
    $in_file_path = $in_folder + "\" + $file.Name

    # 5.連番設定(キーブレイク)
    $now_key = $file.Name.Substring(0, 4)
    if($hold_key -ne $now_key){
        $cnt = 0
        $hold_key = $now_key
    }
    $cnt++

    # 6.コピー先パス設定
    $out_file_path = $out_folder + "\" + $now_key + "_picture_" + $cnt.ToString("D3") + $file.Extension

    # 7.ファイルコピー
    Copy-Item $in_file_path $out_file_path
}

以下、コードの解説です。

1.$in_folder、$out_folderにそれぞれコピー元とコピー先のフォルダのパスを設定

2.処理するファイルの情報を一覧で取得
また、ファイル名順で処理するよう、取得する際にファイル名でソートをかける

3.連番を付与する変数($cnt、$hold_key)を初期化

4.コピー元ファイルパスを設定

5.連番のカウント処理
1つ前のファイル名とキーが異なる場合、連番リセット

6.コピー先ファイルパスを設定

7.ファイルコピー処理

4~7まで全ファイル分処理を続ける

このコードを実行すると、コピー先フォルダに画像ファイルがリネームされてコピーされます。

スポンサーリンク

終わりに

いかがでしたでしょうか?
前回同様、コードをコピペして少し変更するだけで簡単に試せるので是非やってみてください!

本ブログで一押しのオンラインスクールのご紹介♪




本ブログで一押しのオンラインスクール「Udemy」
筆者も利用しているスクールで、日頃の隙間時間に好きな講座が学べるので大活躍です♪

ジャンルが豊富で学びたい講座がきっとみつかる

AI・データサイエンスなど最先端のIT技術からプレゼンなどビジネススキルに関する講座まで15.5万以上(※海外講座含む)あるため、自分が学びたい講座をみつけることができます

お手頃な価格帯

1講座あたり数千~数万円程度で実践的なスキルアップが可能です。
講座は一度購入すれば視聴期限なく受講でき、30日返金保証もついているので安心して始めることができます。

学びやすい多彩な機能

0.5~2倍の変速機能で自分のペースで受講が可能、専用アプリを使えばスマホからオフライン環境でも視聴が可能です!
また、講師に直接掲示板から質問ができるので疑問を解決し自学自習をサポートしてくれます。

購入前に視聴できますので、是非興味のある方は↓をクリックしてみてください。




PowerShellプログラミング
スポンサーリンク
nyanblog
タイトルとURLをコピーしました