「ファイル読込(Load File)」ステップで読み込むファイルパスに、OSのコマンド結果を用いた場合の注意事項

フォローする

事象

OSコマンド(WindowsWhereコマンドなど)の結果を変数に格納して、「ファイル読込(Load File)」ステップでその変数を用いてファイルを読み込もうとした際に、対象ファイルは正しく存在しているにもかかわらず、ファイルが見つからないエラーが発生する場合があります。

<例>
C:\test\ のディレクトリ内から「a.txtOSコマンド(whereコマンド)にて検索し、変数にフルパスを格納後、その変数を用いてファイルを開く

 mceclip0.png

 

▼「コマンドライン実行(Execute Command Line)」ステップの設定 
mceclip1.png

 

▼「ファイル読込(Load File)」ステップの設定  
mceclip2.png

 

<エラーメッセージ>

■デザインモード:スマート再実行(フル)の場合

ターゲットに到達できないとき、ファイル読込アクションによるエラーが発生しました。ファイルが見つかりません。:“{ファイルパス}

mceclip1.png

 

■デザインモード:最小実行(ダイレクト)の場合

ファイル読込アクションによるエラーが発生しました。ファイルが見つかりません。:“{フルパスを格納する変数}”

mceclip3.png

 

OSコマンドの結果は<LF>のような改行に相当する内容を含む結果を返す場合があり、その結果をそのまま変数へ格納したことが原因と考えられます。
このような場合、ShortText変数では変数の値の末尾にスペースが入るような見え方になり、LongText変数の場合、変数の値に空白行が1行分追加された見え方になる事が確認されています。
DS
上では、先述の例のようにエラーが発生した(Whereコマンド結果を格納した)変数に対して
「変数の変換(Convent Variables)」ステップにてURLエンコードを行い、末尾に%0Aのような改行に相当するコードが含まれているかどうかを確認することで切り分けが可能です。

mceclip5.png

 

対応策

エクスプレッションで下記の指定を行うと、ファイルの読込みに成功する事が確認できています。

指定例:trim(対象ファイル変数)
trim関数は文末のスペースを削除する関数です。

mceclip7.png

 

関連ナレッジ

フォルダパスを取得する方法