日付条件で情報を引き出す: ファイル名が指定された日付と時刻よりも大きい場合は、ファイル名をリストに入れますやあ、
1) zip アーカイブであり、2) yyyy/mm/dd より大きい作成日である場合、特定の条件でディレクトリ内のファイル名のリストを取得しようとしています。 以下は私のスクリプトです。 私の質問
1) エラーなしで実行されましたが、空のリストは返されませんでした。 何が問題なのかわからない (おそらく日付)。
2) 作成日 () の出力形式を yyyy/mm/dd hh:mm:ss に設定するにはどうすればよいですか?
3) 100K を超える zip フォルダーがあるため、path2 をループするのに時間がかかります。 それを行う他のより速い方法はありますか?
ありがとう
path2 = "C:\Users\test\;
filelist = files in directory (path2);
lst2 = {};
For(i=1, i<= N items(filelist), i++,
If( Contains(filelist[i], ".zip") & Creation Date( path2||filelist[i]) > 2022-10-12T08:00:00, Insert Into( lst2, filelist[i] )
),
);
スクリプティングRe: 日付条件で情報を取得: ファイル名が指定された日付と時刻よりも大きい場合はリストに入れるあなたが提供した例では、path2 = 行に二重引用符がありません。また、時間参照は JMP によって処理されていないようです。そのため、Informat() 関数に変更することで、 JMP の日付/時刻参照は正しく解釈されています。
names default to here(1);
path2 = "C:\Users\test\";
filelist = Files In Directory( path2 );
lst2 = {};
For( i = 1, i <= N Items( filelist ), i++,
If( Contains( filelist[i], ".zip" ) & Creation Date( path2 || filelist[i] ) > informat("2022-10-12T08:00:00", "yyyy-mm-ddThh:mm:ss"),
Insert Into( lst2, filelist[i] )
)
);Re: 日付条件で情報を取得: ファイル名が指定された日付と時刻よりも大きい場合はリストに入れるこんにちはジム、ありがとう。問題を修正しました。 ただし、フォルダ内のファイルが多すぎると、処理に時間がかかりすぎます。 以下は私が持っている新しいステップですので、次回は最新のファイルをプルしたいだけですが、日付/時刻をフィルターとして使用するのと同じように時間がかかりません(上記)。 それが効果的な方法かどうかはわかりません。 より短い時間で最新のファイルを抽出するより良い方法はありますか?
1) 定義されたフォルダー内のファイルリスト全体を初めて取得します (ディレクトリ内のファイル(dir) )。 テーブル「T1」の列に保存しました(1回のみ実行)
2) しばらくすると、最新のファイルが同じフォルダーに追加されます。スクリプトは同じフォルダーに移動し、ファイルリスト全体を「newlist」として取得します (newlist =ディレクトリ内のファイル(dir)) .
3) テーブル 1) の列をリストとして取得し、ループして newlist から要素を削除します (私は Remove From ()) を使用します。
4) newlist で必要なことは何でもします。
5) 1) のテーブルに newlist を追加します。
6) 次回、最新のファイルを再度取得する必要がある場合は、手順 2)-5) を繰り返します。
なにか提案を?
Re: 日付条件で情報を引き出す: ファイル名が指定された日付と時刻よりも大きい場合はリストに入れるあなたはこれを試すことができます....それはそれをスピードアップするはずです
Names Default To Here( 1 );
path2 = "C:\Users\test\";
filelist = Files In Directory( path2 );
For( i = N Items( filelist ), i >= 1, i--,
If( Right( filelist[i], 4 ) != ".zip",
Remove From( filelist, i, 1 )
)
);
lst2 = {};
For( i = 1, i <= N Items( filelist ), i++,
If( Creation Date( path2 || filelist[i] ) > informat("2022-10-12T08:00:00", "yyyy-mm-ddThh:mm:ss"),
Insert Into( lst2, filelist[i] )
)
);