• ベストアンサー

複数ファイル?処理させる方法について

Perlでファイルに適当なレコードを追加するスクリプトを組んだのですが、 どうしたら、複数ファイルを一度に処理できるのでしょうか? 例えば、フォルダ内のファイル全てを処理するとか、、、 環境はwin ntです。

  • makos
  • お礼率50% (7/14)
  • Perl
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 ディレクトリを操作するには、opendir、readdir、closedirという3つの関数を使います。  具体的には、 sub getDirEnt {   local(@dirs, $i);   opendir(DIRHANDLE, "@_[0]");   while ( $i = readdir(DIRHANDLE) ) {     push(@dir, $i);   }   close(DIRHANDLE);   return @dirs; }  このサブルーチンのようにしてください。(このサンプルはタブを全角スペースで記述しています)  これは、第1引数にディレクトリ名を記述すると、そのファイルエントリーを配列で返します。  取得されたすべてのファイルを順にオープンし、処理を行うことでご希望の処理ができると思います。

makos
質問者

お礼

早速の回答ありがとうございます。 具体的なロジックまで記述していただき、 とてもわかり易かったです。 これで何とかなりそうです。本当にありがとうございました。

その他の回答 (1)

  • shigatsu
  • ベストアンサー率26% (511/1924)
回答No.2

Perl以外でそういう処理をしたことがありますか? アルゴリズム的には、ファイルのエントリ情報を取得して、それがなくなるまで繰り返し実行するのが普通ですね。 rewinddir,readdir という関数が有りますのでそれを使えば可能だと思います。

makos
質問者

お礼

早速の回答ありがとうございます。 他の言語でもこういった処理をしたことがありませんでした。。。 rewinddirというのはちょっと何に使うのかわかりませんが もうちょっと調べてやってみようと思います。

関連するQ&A

  • 複数のファイルに同様の処理

    複数のファイルに同様の処理 複数のエクセルファイル(ブック)があります。測定データを管理しているもので、どのファイルも同じ表、同じレイアウトが使われていて、表内の値などが違うだけになっています。 すべてのブックの表題を同じように変更したり、日付を同じように変更したりしたいのですが、何か良い方法はないでしょうか? 「一つのブックに複数のシート」で処理してやれば「作業グループ」で処理できることはわかっているのですが、ファイルの管理上複数のブックにしておく必要があります。 なので、一度「複数のブック」を「一つのブック、複数のシート」にまとめて、元に戻す、などといった処理をしてくれるようなソフトでもあれば・・・。とも思っているのですが。 マクロを自分で組む技量がありません。 何か良い方法がありましたら、ご教授ください。

  • Perlで複数ファイルをアップロードする方法?

    Perlで複数ファイルをアップロードする方法? Perl勉強中の初心者です。 掲示板などで、フォルダ内にある複数ファイルを一度に ファイルアップロードする方法はどうやるのでしょうか? 一番は、サンプルプログラムがあれば、教えてほしいです。 また他の言語で可能なら、その方法論を知りたいです。 それを元にPerlで実現できないか検討したく。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • バッチファイルで複数のファイルを処理させたい

    バッチファイルを書くことで、複数のwavファイルを同時にWindows Media Encoder 9のエンコードスクリプトを用いて可逆圧縮したいと思っているのですが、バッチファイルでドロップした複数のファイルをまとめて処理することは可能なのでしょうか? もし可能なのであれば、その方法をご教示下さい。お願いします。

  • フォルダ内の複数のテキストファイルから指定行の抽出

    あるフォルダ内に入っているテキストファイルの2行目を全て抽出して一つのファイルにまとめたいのですが、どのような方法があるのでしょうか? perlなどのスクリプトを教えてもらえればと思います。

    • ベストアンサー
    • Perl
  • Excelマクロで複数のファイルを開く方法

    Excel VBAでそのマクロを実行するファイルと同じフォルダにある 複数のテキストファイルを全て開いて、ある処理を実行して それを名前を変えた別のテキストファイル(元のテキストファイル名に 何らかの名前を追加する形が望ましいです。)として保存する マクロを作成したいのですが、可能でしょうか。 当方、初心者につき申し訳ございませんがよろしくお願い致します。

  • vbaでフォルダ内ファイルの処理

    フォルダに複数のXMLファイルがあります。 そのXMLファイル一つ一つに対して まず1個目のXMLファイルを取り込む→処理する→終わったら2個目のXMLファイルを取り込む→処理・・・ という作業をフォルダ内にあるすべてのXMLファイルに対して行いたいのですが なにかいい方法はありますでしょうか? (処理の内容はXMLファイルの中にある<集計>○○○</集計>の○○○を取り出すという処理をします)

  • 1ファイルずつ読み込みたい

    ウィンドウズ環境でactive perlを利用しています。 あるディレクトリーの中に2000位のファイルが入っており、このファイルを読み込んで置換処理を行うため下記のようなperlを作っています。 1ファイルはおおよそ3000行くらいです。 foreach(<*.html>) { open(IN_FILE, $_) || die; open(OUT, ">$_.tmp") || die; @record=<IN_FILE>; foreach $record (@record){ $record =~s/aaa/bbb/isg; } print OUT @record; close( IN_FILE); close( OUT); rename("$_.tmp", $_) ; } 当たり前かもわかりませんが、メモリー不足になり処理が中断します。 ディレクトリーの中のファイル数を600程度に少なくすると処理が完了します。 そこで質問なのですが、ディレクトリーの中のファィルを一度に全部読み込まず、1ファイルずつ順次読み込んでいくことはできないでしょうか。 最初の1行目のforeachをwhileに変えたりしたのですがうまくいきません。 対応策あればご教示ください。

    • ベストアンサー
    • Perl
  • 複数ファイルを圧縮するスクリプト

    http://q.hatena.ne.jp/1123181645 上記リンクのURLに「Windowsでフォルダ内にある複数の ファイルを個別にZip圧縮するスクリプトを組みたい」 との質問があり、返答のなかに回答のスクリプトがありますが、 このスクリプトを「複数ファイルを個別にZIP圧縮する」のではなく、「複数ファイルを纏めてひとつのZIPファイルに圧縮する」に 変更するスクリプトをどなたか教えて頂けますでしょか。 すいませんが宜しくお願いします。

  • 複数のファイルを読み込んで別々に書き出すには?

    Perlで複数のファイル 001.txt, 002.txt, 003.txt を一度に読み込み、行頭に行番号を付け、それぞれ 001.OUT, 002.OUT 003.OUT というファイル名で出力するためにはどうすればよいでしょうか? できますでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • UNIXシェルプログラム等からバイナリーファイルを作成する方法

    UNIX環境で、ある出力を得るために、複数の Perl スクリプト、シェル スクリプト、またバイナリのプログラムを決まった手順で実行しています。最近になって、これらのプログラムをすべて他の人に譲り渡す必要が生じたのですが、スクリプトの中にソースは配布できないものが含まれています。 そこで、これらのプログラムをまとめて一つのバイナリ実行ファイルを作成できないかと思案しているのですが、それは可能でしょうか。また可能な場合、どのようにしたらよいのか教えていただけないでしょうか。 よろしくお願いします。

専門家に質問してみよう