この記事で扱っていること
- 連番ファイル名の数字順に配列表示させる方法
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
複数のファイルに対して処理を行わせる際に、その複数のファイルが入ったフォルダを指定して「フォルダをリスト」関数を使うことでファイルの配列を取得し、その後にForループに自動指標付けを有効にした状態で入力する、という使い方がスマートです。
ただ、このフォルダをリストの関数で得られるファイルの配列は、必ずしも数字順に結果を返さないことがあります。
本記事では、それを数字順に並び替えるような操作の一例を紹介しています。
どんな結果になるか
そもそもフォルダをリスト関数をそのまま使用する場合にどのような結果になるかについてまず確認していきます。
このように、~1.txtと~2.txtと~10.txtというファイルがあった場合に、配列では~1.txtのあとは~10.txtとなり、その後に~2.txtとなります。
これを、数字の順番に出力させてやります。
プログラムの構造
構造としては、数字の部分を抜き出した配列を作り、これをソート後に、ファイル名を組み立てるという処理を行います。
なお、この方法だと、数字がついていないファイルに対しては自動的に0が付与され、一番上に来ることになります。
ファイル名の他の場所に数字が使われている場合
上のプログラムでもある場合を除いてはキレイに動作すると思いますが、弱点があります。
それは、拡張子の手前以外にも数字がある場合です。
それでも少しプログラムを変えただけで対応できるように修正できます。
この場合、ファイル名の文字列を反転さえて、連番を示す数字の部分をパターン検出してから再度文字列を反転させるといった方法で対応できます。
別のパターンで数値がある場合でも、文字列を反転させたり、特定の並びで数値が間に入っている文字列をあらかじめ取り除くような処理をしておくことで対応できると思います。
本記事では、連番のファイル名を数字順に配列表示させる方法を紹介しました。
どうせすべてのファイルに対して処理を適用させるのであれば順番を気にする必要はないのですが、例えば「連番が10までのファイルには処理Aを、次の11から20までには処理Bを行う」といったことを分ける場合など、順番を気にするプログラムの場合には参考になるかもしれません。
ここまで読んでいただきありがとうございました。
コメント