複数のファイルに対してファイル関数を実行する方法。 ワイルドカードは使えないみたいですね?ワイルドカードを使用して複数のファイルに対してファイル関数を実行するにはどうすればよいですか? ファイルを使い終わった後、次のように対応するフォルダーにファイルを並べ替えたいとします。
Move Files("c:/temp/*.jmp", "c:/temp/processed_jmp/");
Move Files("c:/temp/*.csv", "c:/temp/processed_csv/");これはワイルドカードでは機能しないようです。 すべてのファイルのリストを取得し、それを拡張子ごとに個別のリストに分割し、各ファイルを反復処理する FOR ループを作成するのは面倒です。 もっとエレガントな方法はありますか?
Re: 複数のファイルに対してファイル関数を実行する方法。 ワイルドカードは使えないみたいですね?そうですね、これ以上エレガントとは言えませんね。 この解決策は確かに見たことがありますが、私は現在の解決策に固執したいと思っています。
どうもありがとう!Re: 複数のファイルに対してファイル関数を実行する方法。 ワイルドカードは使えないみたいですね?次のような RunProgram を使用できます (完全な例を実現するには多くの設定が必要です)
Delete Directory( "$temp/aaa" ); // make sure source is empty
Create Directory( "$temp/aaa" );
Save Text File( "$temp/aaa/a1.txt", "a" );
Save Text File( "$temp/aaa/a2.txt", "aa" );
Save Text File( "$temp/aaa/a3.bad", "no suffix" );
Delete Directory( "$temp/bbb" ); // make sure dest is empty
Create Directory( "$temp/bbb" );
aaa = Convert File Path( "$temp/aaa", "windows" ); // "C:\Users\v1\AppData\Local\Temp\aaa"
bbb = Convert File Path( "$temp/bbb", "windows" ); // "C:\Users\v1\AppData\Local\Temp\bbb"
aaawild = aaa || "\a*.txt"; // wild card *
result = Run Program( Executable( "CMD.EXE" ),
Options( {"/a", "/q", "/c move ", aaawild, bbb} ), ReadFunction( "text" ) );
Write( result );
Show( Files In Directory( aaa ) );
Show( Files In Directory( bbb ) );
C:\Users\v1\AppData\Local\Temp\aaa\a1.txt
C:\Users\v1\AppData\Local\Temp\aaa\a2.txt
2 つのファイルが移動されました。
ディレクトリ内のファイル(aaa) = {"a3.bad"};
ディレクトリ内のファイル(bbb) = {"a1.txt", "a2.txt"};
/a と /q はオプションCMD.EXE の場合、/c は移動コマンドを CMD.EXE に渡します。
Re: 複数のファイルに対してファイル関数を実行する方法。 ワイルドカードは使えないみたいですね?現在、私は次のように実装しています。
path = "c:/temp/";
pathProcessed = path||"processed/";
listOfFiles = Files In Directory(path);
for(i=1, i<=N Items(listOfFiles), i++,
if(Contains(listOfFiles[i], ".jmp")>0, Move File(path||listOfFiles[i], pathProcessed||listOfFiles[i]));
);
でも見た目は怪しいです…