事象
OSコマンド(WindowsのWhereコマンドなど)の結果を変数に格納して、「ファイル読込(Load File)」ステップでその変数を用いてファイルを読み込もうとした際に、対象ファイルは正しく存在しているにもかかわらず、ファイルが見つからないエラーが発生する場合があります。
<例>
「C:\test\」 のディレクトリ内から「a.txt」 をOSコマンド(whereコマンド)にて検索し、変数にフルパスを格納後、その変数を用いてファイルを開く
▼「コマンドライン実行(Execute Command Line)」ステップの設定
▼「ファイル読込(Load File)」ステップの設定
<エラーメッセージ>
■デザインモード:スマート再実行(フル)の場合
ターゲットに到達できないとき、ファイル読込アクションによるエラーが発生しました。ファイルが見つかりません。:“{ファイルパス}
”
■デザインモード:最小実行(ダイレクト)の場合
ファイル読込アクションによるエラーが発生しました。ファイルが見つかりません。:“{フルパスを格納する変数}”
OSコマンドの結果は<LF>のような改行に相当する内容を含む結果を返す場合があり、その結果をそのまま変数へ格納したことが原因と考えられます。
このような場合、ShortText型変数では変数の値の末尾にスペースが入るような見え方になり、LongText型変数の場合、変数の値に空白行が1行分追加された見え方になる事が確認されています。
DS上では、先述の例のようにエラーが発生した(Whereコマンド結果を格納した)変数に対して
「変数の変換(Convent Variables)」ステップにてURLエンコードを行い、末尾に%0Aのような改行に相当するコードが含まれているかどうかを確認することで切り分けが可能です。
対応策
エクスプレッションで下記の指定を行うと、ファイルの読込みに成功する事が確認できています。
指定例:trim(対象ファイル変数)
※ trim関数は文末のスペースを削除する関数です。
関連ナレッジ