2017-07-11 14 views
0

実行中のCLIPSプログラムからディレクトリリストを取得する方法を探しています。最終的な目標は、CLIPSプログラムを実行し、CLIPSにロードするファクトファイルのセットを見つけてから、ルールを実行することです。CLIPSプログラムからディレクトリリストを取得する方法

http://www2.cs.siu.edu/~rahimi/cs537/slides/big-2.pdfによると、私は例外なく完了

(defrule list-the-directory 
=> 
    (printout t (system “ls ” “*.txt”) crlf) 
) 

その関数の呼び出しを試みたが、何も返されません。

ああ、私は、Mac OS Xの上のクリップ6.3に任意の助けを事前に

感謝を実行しています。

バーニー

答えて

1

CLIPSシステム関数は、Cシステムライブラリ関数を呼び出します。システムコールの出力は、端末/コンソール(C標準出力)に出力されます。ターミナル/コンソールアプリケーションとしてCLIPSを実行している場合は、端末/コンソールに出力が表示されます。 CLIPS IDEを使用している場合は、IDEダイアログウィンドウがCLIPSから直接出力をキャプチャして表示するため、C標準出力からの出力は表示されません。

あなたは、ファイルへのシステムコマンドからの出力を指示する場合は、ファイルを開いて、クリップを使用して、その内容を印刷することができますI/Oコマンド:

(defrule list-the-directory 
    => 
    (system "ls > out.txt") 
    (open "out.txt" out "r") 
    (bind ?line (readline out)) 
    (while (neq ?line EOF) 
     (printout t ?line crlf) 
     (bind ?line (readline out))) 
    (close out)) 

あなたがロードを使用する場合は構築...メニューをコマンドを使用してルールをロードすると、ディレクトリはルールを含むディレクトリに設定され、ファイルを作成して開くときに部分的なディレクトリパスを指定できます。それ以外の場合は、完全なファイルパスを指定する必要があります。

+0

awesome - thanks :) – Bernie

関連する問題