Powershell重複しないファイル名の生成

コンピュータ

はじめに

Windowsのエクスプローラでフォルダを作成すると「新しいフォルダー」が出来上がります。
続けてフォルダを作成すると「新しいフォルダー(2)」というフォルダが出来ます。
2回目のフォルダ作成時「新しいフォルダー」が既に存在しているので、重複しないパスにする為「(2)」となります。

Powershellスクリプトでファイルを取扱っていると同様な場面に出会うことが多々ございますので、重複しないファイル名の生成をしてみたいと思います。

PowerShellスクリプトを初めて実行する場合

PowerShellスクリプトの実行を許可してください。
Powershellのps1ファイルを実行する方法
はじめに WindowsのコマンドラインインターフェースであるPowershellはコマンド操作をテキストファイルに記述したスクリプトファイルを実行することが出来ます。 Microsoft Excelで言うところのマクロのような物で...

ファイルの存在確認

まずは指定するファイルが存在しているか確認する命令を試してみます。

このコマンドレットはファイルのパスが既に存在する場合True(真)存在しないFalse(偽)を返します。
スクリプトを組む場合はこちらの結果をIf文などで条件分岐することになります。

ファイル番号のカウントアップのループ処理

一定条件を満たすまでループする処理を行います。ループの構文は複数有りますが今回はFor文を使います。

この処理は(継続条件)が成立(真)するかぎり{}内の処理を実行します。
この際$i変数は”$i=0″で初期化され”$i++”でカウントアップされます。
一般的な(継続条件)の式は”$i -lt 10″(10以下)などとすると0~9まで10回ループします。

今回は決まった回数をループするのではなくファイル名の重複が解消されるまでループする事になります。

ファイル名のベース名と拡張子を取得

連番ファイル名を生成する為にはファイル名を以下の様にフォーマットする必要があります。
“ベース名” ( 連番 ) “.拡張子”
さらにそのファイルが存在するフォルダのパスも必要となります。
Powershellのファイルオブジェクトのプロパティから取得します。

関数について

重複しないファイル名を生成するための材料はそろいました。
この材料を組み合わせてルーチン化しますが、そのルーチンを何度も実行することになりますので関数化することとします。
関数の書式は次のように成ります。

空のファイル名作成

今回のルーチンが正しく動作するか確認するため、空ファイル(ファイルサイズ0)の作成します

スクリプト

一連の処理をスクリプトにまとめます。
メモ帳などで以下のコードを入力しファイル名を「Create-UniquePath.ps1」で保存します。

実行するごとに”Create-UniquePath(n).ps1″形式のファイルが出来上がれば成功です。

スポンサーリンク


ブログランキング参加中
にほんブログ村 PC家電ブログ 自作PCへ
にほんブログ村
自作PCランキング
自作PCランキング
ブログサークル
ブログサークル
ブログにフォーカスしたコミュニティーサービス(SNS)。同じ趣味の仲間とつながろう!

免責事項

当サイトの情報・資料の掲載は注意を払っておりますが、掲載された情報の内容の正確性については一切保証致しません。
また、当サイトに掲載された情報・資料を利用、使用、ダウンロード等の行為で生じたあらゆる損害等に関して、理由の如何に関わらず当方は一切責任を負いません。

コンピュータ
スポンサーリンク
シェアする
八 四をフォローする
迷惑堂本舗

コメント