# ランタイムにオペレーティングシステムを検出してファイルパスをダイナミックに設定

さまざまなオペレーティングシステムでジョブを実行できるには、以下のジョブの例のように、コンテキスト変数を使ってファイルパスを設定できます。

このジョブは以下のもので構成されています:

* コンテキスト変数を初期化して、オペレーティングシステムを検出するtJavaコンポーネント、
* データを生成するtFixedFlowInputコンポーネント、
* .txtファイルを生成するtFileOutputDelimitedコンポーネント。

![](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/dynamically_setting_the_file_path_1.png)

## 手順

1. DetectOSTypeDemoという名前の新しいジョブを作成して、[Palette] (パレット)からtJavaコンポーネントをワークスペースに配置します。
2. ワークスペース上にtFixedtFlowInputとtFileOutputDelimitedを配置して、[Row main] (行メイン)リンクを使って、それらを接続します。[Trigger &gt; On Subjob Ok] (トリガー &gt; サブジョブがOKの場合)リンクを使って、tJavaコンポーネントをtFixeFlowInputコンポーネントに接続します。
3. tJavaコンポーネントをクリックし、その[Basic settings] (基本設定)ビューを開き、[Code] (コード)エリアに以下のコードを追加して、コンテキスト変数を初期化およびオペレーティングシステムを検出します:
   ```
   String os = System.getProperty("os.name").toLowerCase();  
   if(os.indexOf("win") >= 0){
   context.filePath="C:/temp/out.txt";
   }else { //Unix / Linux file path
   context.filePath="/var/temp/out.txt";
   }
   ```
4. tFixedFlowInputコンポーネントをクリックして、[Basic settings] (基本設定)ビューを開きます。
5. [Edit schema] (スキーマを編集)ボタンをクリックして、nameという名前の新しいカラムを追加します。[Values] (値)ボックスに、"Hello world"という値を追加して、出力データを以下のように生成します。

   ![](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/dynamically_setting_the_file_path_2.png)
6. 次の図に示すように、コンポーネントの[Context] (コンテキスト)ビューで、コンテキスト変数(String型であるfilePathという名前)を作成して、出力ファイルのパスを設定するために使われます。

   ![](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/dynamically_setting_the_file_path_3.png)
7. tFixedtFlowInputのコンポーネントビューをクリックし、次のcontext.filePathというコンテキスト変数を使って、[File Name] (ファイル名)フィールドでファイル名を設定するために使われます。

   ![](https://help.qlik.com/talend/ja-JP/components/8.0/Resources/images/dynamically_setting_the_file_path_4.png)
8. ジョブを実行します。ジョブがWindowsシステムで実行される場合、データは"C:/temp/out.txt"ファイルに書き込まれます。ジョブがUnixシステムまたはLinuxシステムで実行される場合、データは"/var/temp/out.txt"ファイルに書き込まれます。