<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />365 の .csv ファイルを含むフォルダーがあります。 各 .csv ファイルを .jmp ファイルに変換し、.jmp ファイル内のいくつかの列を削除してから、.jmp ファイルを .csv ファイルの名前で保存して、JMP を終了したいと考えています。 これはすべて、JSL スクリプトを使用して自動的に実行する必要があります。
すでにバッチ スクリプトがあり、JSL スクリプトを開始し、1 つの .csv ファイルを JSL スクリプトに渡します。 次に、JSL スクリプトは .csv ファイルを開き、削除したい列を削除します。
JSL スクリプトで開く次の .csv ファイルからバッチ スクリプトを開始するために、.jmp ファイルを保存し、JSL スクリプトで JMP を終了するときに問題が発生します。
.jmp ファイルは保存されないため、JMP は終了せず、バッチ スクリプトは JMP が閉じるのを待つため、バッチ プロセス全体が停止します。
このディスカッションの最後にあるユーザー「twaintwist」の応答に従って、.csv ファイルを開きます。 JSLスクリプトにパラメータを渡す
すべての .csv ファイル + バッチ スクリプト + .jsl スクリプトは同じフォルダーにあります。
この解決策は私にとってはうまく機能するので、ここに私のバッチスクリプトがあります:
(*.csv) の %%f に対して (
echo ファイル名 = "%%~nf.csv";>file.txt
copy /y /b file.txt+myScript.jsl temp.jsl
JMP temp.jsl
タイムアウト / t 5
デル %%~nf.csv
タイムアウト / t 5
デルファイル.txt
タイムアウト / t 5
del temp.jsl
)
一時停止
次に、私の JSL スクリプトは、.bat スクリプトによって渡された .csv ファイルを開き、いくつかの列を削除します。 しかし、cloumns を削除した後、JSL スクリプトが停止するようです。
.jmp ファイルは保存されず、JMP は終了しません。 スクリプトからわかるように、JSL を使用してウィンドウを保存して閉じるさまざまな方法を試しました。
それで、これが私のJSLスクリプトです:
doc = 開く(ファイル名);
dt = 現在のデータ テーブル();
// データ テーブルを迅速に更新できるように、表示の更新をオフにします。
dt << データ更新を開始します。
ColList = {
//#削除する列#
};
dt << 列の削除(ColList);
dt << データ更新終了;
nameLength = 長さ(ファイル名);
fielName = Left(ファイル名, 名前の長さ - 3);
名前 = ファイル名 || "jmp";
dt<
doc<
待機(10);
閉じる (dt、nosave);
閉じる (ドキュメント、保存なし);
//doc << ウィンドウを閉じる;
//dt<<ウィンドウを閉じる();
//すべて閉じる(データテーブル, save(fileName+"jmp"));
終了(保存なし);
終了(保存なし);
.bat ファイルをスケジュールできるのと同じように、JSL スクリプトをスケジュールできます。
「//!」を追加します。スクリプトの最初の行に追加するか、.jsl を .rpt に変更すると、開いたときに自動実行されます。次に、Windows スケジューラがバッチ ファイルではなく JMP スクリプトを参照するようにします。
ただ言って。
残念ながら、このプロセスはより大きなシステムに属しており、Windows スケジューラでスケジュールできる必要があるため、いずれにしても .BAT が必要になりますが、JSL のみで実行できることを思い出させてくれてありがとう 
うまくいきました。うまくいってよかったです。
.BAT ファイルを使用せずに、これらすべてを JSL で行うこともできます。これにより、プロセス全体が簡素化される可能性があります (またはそうでない可能性があります)。JSL には、FilesInDirectory 関数と、ファイル名を構築および検証できる強力な文字列操作関数があります。待機とタイムアウト、および JMP の繰り返しの起動/停止により現在のソリューションが遅すぎる場合は、.BAT ファイルを削除することをお勧めします。
どうもありがとうございます! あなたの解決策で私の問題は解決しました...
JSL はまったくの初心者なので、ログのようなものがあるとは知りませんでした。
ログを確認したところ、列の削除機能が思ったほど適切に機能していないことに気付きました。列名の 1 つを打ち間違えたため、機能が停止したためです。
それでも dt と doc を閉じるのも間違っていましたが、それは最終的にはそれほど大きな問題ではありませんでした。
改めて、ご協力ありがとうございました!
JSL ログでメッセージを確認してください。dt と doc を閉じることが問題になる可能性があります。彼らは同じテーブルですか?