QGISのモデルデザイナーを使って複数のファイルを処理するとき、元のファイル名を引き継いだ形で出力したい場合の方法をまとめました。
やりたいこと
たとえば、次のようなファイルがあるとします。
C:\Users\user_a\qgis_test\file_a.shp
C:\Users\user_a\qgis_test\file_b.shp
…
これをモデルデザイナーで処理したあと、次のように元のファイル名を残した形で、例えば接尾句として_outputを加えて出力したいとき。
C:\Users\user_a\qgis_test\file_a_output.shp
C:\Users\user_a\qgis_test\file_b_output.shp
…
実はQGISのモデルデザイナーでは、最初の入力ファイルと同じフォルダに、元のファイル名を継承して、ファイルを出力することができます。
手順
モデルデザイナーの最初の入力レイヤの名称を確認します(今回は例としてINPUTという入力レイヤを用意しました)。そして、最後の処理の出力先を指定するときに、出力方法を「事前計算済値」にします。
そのうえで、入力欄に
file_path(@input) || '/' || base_file_name(@input) || '_output.shp'
といった式を入力すると、元のファイルのフォルダ内に、元のファイル名を継承した形でShapefileが出力されます。

式の意味
今回使っている式は、次のような意味です。
file_path(@input)
元ファイルが入っているフォルダのパスを取得します。
base_file_name(@input)
元ファイルの拡張子を除いたファイル名を取得します。
つまり、全体としては、
元ファイルのフォルダ + 元ファイル名 + _output.shp
という出力パスを作っていることになります。最後の_output.shpの部分を変えれば、違う命名則でファイルを保存できます!
注意点
ひとつ注意点があります。
私はモデルデザイナー上で入力レイヤの名前を INPUT のように大文字で付けていました。しかし、QGISのバージョンや環境によっては、事前計算済値の中に大文字を含めると正常に処理が行われない場合があります。
実際、私の手元では入力レイヤ名がINPUTと全て大文字のとき、大文字だとエラーだが小文字だと処理が正常に動く状況に出くわしました。
× file_path(@INPUT) || '/' || base_file_name(@INPUT) || '_output.shp'
〇 file_path(@input) || '/' || base_file_name(@input) || '_output.shp'
そのため、モデルデザイナーで元のファイル名を活かした形で出力ファイル名を定義したいとき、最初から入力レイヤのパラメータ名を小文字でinputなどと命名するか、元の入力レイヤが仮に大文字でも事前計算済値には小文字で記入するのが安全です。
同様に日本語名でも処理がうまく回らない場合があるようで、特にこだわりがなければ英語小文字で命名することをお勧めします!

