jsl - 特定の命名規則で最新のファイルを開く方法?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />皆さんこんにちは、
特定の命名規則を含むディレクトリにある最新のファイルを開くようにjslをスクリプトするにはどうすればよいですか?私は以下のコードを持っています。これはディレクトリ内の最新のファイルを開きます。
(
OpenNewestFile =ディレクトリ内のファイル( "C:\ users \ me \ MyDocuments \");
{t、p} = {0,1};
(i = 1、i <= n項目(OpenNewestFile)、i ++、
ti =最終更新日( "C:\ users \ me \ MyDocuments \" || OpenNewestFile ;
(t i> t、t + t i; p = i)の場合)。
dt1 = Open( "C:\ users \ me \ MyDocuments \" || OpenNewestFile
)
;
1日に1回、新しいファイルが "FD_History_2016_08_27_17_36.csv"のような名前でディレクトリに書き込まれます。
このスクリプトを変更して最新の "FD_History_"ファイルを見つけ、ディレクトリ内の他のファイルを無視してそれを開くにはどうすればよいですか。
前もって感謝します!
Re:jsl - 特定の命名規則で最新のファイルを開く方法?この例では、正規表現を使用して、名前が.jmpで終わる($が行の末尾に一致する)か、文字aで始まる(^が行の先頭に一致する)かを確認します。 一致が失敗した場合、正規表現は欠損値を返します。 RemoveFrom関数は、問題のあるアイテムをリストから削除します。 forループは逆方向に実行されるため、削除された項目によってリストのまだ検証されていない部分は変更されません。 (アイテムが削除されると、それ以降のアイテムのインデックスは変わります。)
NULLは、マッチしたテキストを置き換えないように正規表現に指示します。IGNORECASEはJmpとjmpが一致するようにregexに伝えます。
x =ファイルディレクトリ( "$ desktop");
(i = nitems(x)、i> = 1、i--、)に対して
if(ismissing(regex(x 、 ".Jmp $ | ^ a" 、NULL、IGNORECASE))、removefrom(x、i))
;
show(x);
x = {"animated.gif"、"stories.jmp"、"無題3.jmp"};
最後の変更日をこのループに組み込むことも、この後に別のループに入れることもできます。
Re: jsl - 特定の命名規則を使用して最新のファイルを開くにはどうすればいいですか?こんにちは、
私も同様の問題を抱えていますが、この場合はフォルダ名が週ごとに変わります。
フォルダ構造は次のとおりです。
\\themainfolder\ 202503 \PPT_ 12345 \subfolders\indicators.xlsx。
メインフォルダーには 3 つまたは 4 つの「YYYYWW」サブフォルダー (例: 202503、202504、202505) が含まれており、PPT_ 12345フォルダーに関連付けられた番号は毎週ランダムになります。
すべての YYYYWW サブフォルダー {"202512"、"202513"、"202514"} のリストを取得できましたが、最新のフォルダー (最大番号)、この例では "202514" を選択する必要があります。
次に、PPT フォルダーのみを選択する必要があります (他のサブフォルダーもありますが、「PPT_...」という名前のフォルダーは 1 つだけです)。
ここで手伝ってもらえますか?
ありがとう
Re: jsl - 特定の命名規則を使用して最新のファイルを開くにはどうすればいいですか?allfiles = Files In Directory( "c:/" );
show(N Items( allfiles )); // 15 or so
dirlist = Filter Each( {f}, allfiles, Is Directory( "c:/" || f ) );
show(N Items( dirlist )); // 12 or so
sorted = Reverse( Sort List( dirlist ) ); // biggest first
filtered = Filter Each( {f}, sorted, Starts With( f, "Prog" ) );
// {"ProgramData", "Program Files (x86)", "Program Files"}
編集: パスを先頭に追加
詳細: JMP 16 の結果、上記。より新しいバージョンの JMP では、c:/ でより優れた処理が行われ、表示したくないファイル システム オブジェクトが事前にフィルタリングされます。ただし、考え方は同じで、JSL 関数を使用して必要なものを保持し、残りをフィルタリングします。逆順に並べ替えると、日付が 1 番目に配置されます。
Re: jsl - 特定の命名規則を使用して最新のファイルを開くにはどうすればよいでしょうか?Craigeさん、ありがとうございます。返信が遅くなって申し訳ありません。うまく動作しています。唯一の欠点は、フォルダにたくさんのサブフォルダが含まれていることと、「Files In Directory」機能の実行に時間がかかることです。とにかく、ご協力ありがとうございました。